なぜGo言語はコンパクションを採用していないのか GoogleのRick Hudson氏によるISMM 2018 Keynote “Getting To Go”を参照すると、以下のことがわかります。 2014年の時点では”Read barrier free concurrent copying GC”を計画していた しかし期間的な制約から断念し、CMSに舵を切った(この時期に彼らは、ランタイムをCからGoに書き換える作業も行う必要がありました。Changes to the runtime) TCMallocをベースとしたメモリアロケーターを採用することで、断片化およびアロケーションの速度の問題を解決した Go言語のメモリアロケーションについては、ランタイムのコードのコメントにも詳しく記載されています。 malloc.go This was originally based on tcmal
![Go言語のGCについて - LINE ENGINEERING](https://cdn-ak-scissors.b.st-hatena.com/image/square/ec7e3fb6b618d321ac1e39469ec1575d50098de1/height=288;version=1;width=512/https%3A%2F%2Fengineering.linecorp.com%2Fwp-content%2Fuploads%2F2018%2F8%2F2%2F1533208430578.png)