Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Green Tea GCの動作を紙芝居にしてみる
Search
uji
September 04, 2025
160
1
Share
Green Tea GCの動作を紙芝居にしてみる
uji
September 04, 2025
More Decks by uji
See All by uji
【Go ハンズオン】Windows / Linux コマンドを Go で再現
uji
1
100
testdata ディレクトリを活用しよう!
uji
1
370
MCP 公式の Go SDK で QA データ登録アシスタントを作ってみた
uji
0
150
Go Proverbs の紹介
uji
2
190
Go標準の暗号ライブラリメンテナンス戦略
uji
3
730
NOT A HOTEL TECH TALK ーSOFTWARE 3.0への道筋ー NEXT Web3 (2024-08-07)
uji
0
230
マネーフォワード ME ブロックチェーン連携機能におけるGoの活用方法
uji
1
290
Goはブロックチェーン領域でなぜ使われ、どのように活躍しているのか
uji
1
790
標準パッケージ初のgenerics利用事例 "sync/atomic.Pointer"
uji
2
1k
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
How to Talk to Developers About Accessibility
jct
2
170
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
120
How to train your dragon (web standard)
notwaldorf
97
6.6k
KATA
mclloyd
PRO
35
15k
The SEO Collaboration Effect
kristinabergwall1
0
410
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
100
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Discover your Explorer Soul
emna__ayadi
2
1.1k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.6k
Transcript
Green Tea GC の動作を紙芝居にしてみる 2025-08-31 Kyoto.go #63 オフラインLT会
⾃⼰紹介 • 名前: uji • 神⼾市在住 • NOT A HOTEL
所属 • Gopher 7年⽣ • KOBE.go, Kyoto.go 運営 https://twitter.com/uji_rb
Kyoto.go KOBE.go
メモリ上のごみを⾒つけて回収し、 再利⽤できるようにしてくれる仕組み 開発者が⼿動メモリ管理からの解放され、 より本質的なプログラミングに集中できる • 使われなくなったメモリ領域の解放 • メモリリークや脆弱性などのリスク低減 そもそもGCって何?
既存のGCの動作
1. Mark 2. Mark termination 3. Sweep 4. Sweep termination
terminationの際、アプリケーションは停⽌ GCの動作の流れ https://github.com/golang/go/blob/master/src/runtime/mgc.go
Mark
Mark
Mark 灰⾊は探索の再開位置のキューイング対象
Mark termination
Sweep
Sweep termination
詳しくは… https://gocon.jp/2022spring/ja/sessions/a4-s/
• Go 1.25 に実験的に導⼊された新しいGCアルゴリズム • 「局所性」の問題を解決する⽬的で作られた ◦ 空間的局所性(メモリ内の全く異なる領域間を⾶び回る) ◦ 時間的局所性(同じメモリへの⾮効率的なアクセス)
• 実⾏時間の平均85%がグラフ探索のスキャンループに消費 その35%以上は、メモリからのデータが読み込みを待っている • spanと呼ばれる単位でスキャンとMarkを⾏う Green Tea GC とは? https://github.com/golang/go/issues/73581
「局所性」の問題 オブジェクトがメモリのどこにあるかを全く意識してない
Green Tea GCのスキャン Stack Heap 場所が近いオブジェクトをspanにまとめて、span単位でスキャンする
Green Tea GCのMark Stack Heap 代 表 到達したspanを灰⾊にする(キューイング) 最初に到達したオブジェクトは代表オブジェクト
Green Tea GCのMark Stack Heap 代 表 代 表
Green Tea GCのMark Stack Heap 代 表 代 表 代
表 代表オブジェクト以外にもアクセスされている場合 span内のオブジェクトを全てスキャン対象にする(ヒットフラグ👊が⽴つ)
Green Tea GCのMark Stack Heap 代 表 代 表 代
表 スキャンが終わったspanは黒に メモリ領域が近いオブジェクトを効率的にスキャンできる