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
200
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Green Tea GCの動作を紙芝居にしてみる
uji
September 04, 2025
More Decks by uji
See All by uji
【Go ハンズオン】Windows / Linux コマンドを Go で再現
uji
1
120
testdata ディレクトリを活用しよう!
uji
1
460
MCP 公式の Go SDK で QA データ登録アシスタントを作ってみた
uji
0
180
Go Proverbs の紹介
uji
2
230
Go標準の暗号ライブラリメンテナンス戦略
uji
3
770
NOT A HOTEL TECH TALK ーSOFTWARE 3.0への道筋ー NEXT Web3 (2024-08-07)
uji
0
270
マネーフォワード ME ブロックチェーン連携機能におけるGoの活用方法
uji
1
320
Goはブロックチェーン領域でなぜ使われ、どのように活躍しているのか
uji
1
820
標準パッケージ初のgenerics利用事例 "sync/atomic.Pointer"
uji
2
1.1k
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Balancing Empowerment & Direction
lara
6
1.2k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
800
Product Roadmaps are Hard
iamctodd
55
12k
Color Theory Basics | Prateek | Gurzu
gurzu
0
430
How to Ace a Technical Interview
jacobian
281
24k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
380
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
490
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は黒に メモリ領域が近いオブジェクトを効率的にスキャンできる