Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Green Tea GCの動作を紙芝居にしてみる

Avatar for uji uji
September 04, 2025
30

Green Tea GCの動作を紙芝居にしてみる

Avatar for uji

uji

September 04, 2025
Tweet

Transcript

  1. ⾃⼰紹介 • 名前: uji • 神⼾市在住 • NOT A HOTEL

    所属 • Gopher 7年⽣ • KOBE.go, Kyoto.go 運営 https://twitter.com/uji_rb
  2. 1. Mark 2. Mark termination 3. Sweep 4. Sweep termination

    terminationの際、アプリケーションは停⽌ GCの動作の流れ https://github.com/golang/go/blob/master/src/runtime/mgc.go
  3. • Go 1.25 に実験的に導⼊された新しいGCアルゴリズム • 「局所性」の問題を解決する⽬的で作られた ◦ 空間的局所性(メモリ内の全く異なる領域間を⾶び回る) ◦ 時間的局所性(同じメモリへの⾮効率的なアクセス)

    • 実⾏時間の平均85%がグラフ探索のスキャンループに消費 その35%以上は、メモリからのデータが読み込みを待っている • spanと呼ばれる単位でスキャンとMarkを⾏う Green Tea GC とは? https://github.com/golang/go/issues/73581
  4. Green Tea GCのMark Stack Heap 代 表 代 表 代

    表 代表オブジェクト以外にもアクセスされている場合 span内のオブジェクトを全てスキャン対象にする(ヒットフラグ👊が⽴つ)
  5. Green Tea GCのMark Stack Heap 代 表 代 表 代

    表 スキャンが終わったspanは黒に メモリ領域が近いオブジェクトを効率的にスキャンできる