Go 1.26のGarbage Collector「Green Tea」を詳しく観察

Judul asli: Watching Go's new garbage collector move through the heap

Mengapa Ini Penting

GoのGCアーキテクチャの進化と限界を実証的に示し、インフラ開発者のパフォーマンス最適化判断に直結する。

Go 1.26ではGarbage Collector「Green Tea」がデフォルトになった。ヒープ上のオブジェクト配置をperfで可視化し、非移動式コレクタの限界も検証された。

Go 1.25で導入された新しいGarbage Collector「Green Tea」は、Go 1.26(数か月前にリリース)でデフォルトとなった。記事ではGoのメモリ管理の仕組みを解説。Goは同じサイズクラスのオブジェクトを連続したチャンク(スパン)内に割り当てる。スパンは1つ以上の8KiBページで構成され、サイズ分離アロケーションはtcmalloc由来のGoアロケータに共通する手法だ。記事では小・中・大の3サイズのオブジェクトをランダムに100個アロケートし、ヒープアドレスを走査してオブジェクト配置を可視化するプログラムをGoとC#で実装・比較した。また、GoのGCは非移動式コレクタであるため、スパース(疎)なページを回収できないという残留課題があることも示された。GC実行前後でオブジェクトアドレスが変化しない点も実証されている。

Sumber

theconsensus.dev — Baca artikel asli →