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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
110
testdata ディレクトリを活用しよう!
uji
1
440
MCP 公式の Go SDK で QA データ登録アシスタントを作ってみた
uji
0
170
Go Proverbs の紹介
uji
2
210
Go標準の暗号ライブラリメンテナンス戦略
uji
3
760
NOT A HOTEL TECH TALK ーSOFTWARE 3.0への道筋ー NEXT Web3 (2024-08-07)
uji
0
260
マネーフォワード ME ブロックチェーン連携機能におけるGoの活用方法
uji
1
310
Goはブロックチェーン領域でなぜ使われ、どのように活躍しているのか
uji
1
810
標準パッケージ初のgenerics利用事例 "sync/atomic.Pointer"
uji
2
1.1k
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
Design in an AI World
tapps
1
260
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
190
Product Roadmaps are Hard
iamctodd
55
12k
The agentic SEO stack - context over prompts
schlessera
0
840
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
180
Leo the Paperboy
mayatellez
8
1.9k
New Earth Scene 8
popppiees
3
2.4k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
650
A Modern Web Designer's Workflow
chriscoyier
698
190k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
380
Being A Developer After 40
akosma
91
590k
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は黒に メモリ領域が近いオブジェクトを効率的にスキャンできる