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
1
150
Green Tea GCの動作を紙芝居にしてみる
uji
September 04, 2025
Tweet
Share
More Decks by uji
See All by uji
【Go ハンズオン】Windows / Linux コマンドを Go で再現
uji
1
94
testdata ディレクトリを活用しよう!
uji
1
360
MCP 公式の Go SDK で QA データ登録アシスタントを作ってみた
uji
0
150
Go Proverbs の紹介
uji
2
180
Go標準の暗号ライブラリメンテナンス戦略
uji
3
720
NOT A HOTEL TECH TALK ーSOFTWARE 3.0への道筋ー NEXT Web3 (2024-08-07)
uji
0
230
マネーフォワード ME ブロックチェーン連携機能におけるGoの活用方法
uji
1
280
Goはブロックチェーン領域でなぜ使われ、どのように活躍しているのか
uji
1
780
標準パッケージ初のgenerics利用事例 "sync/atomic.Pointer"
uji
2
1k
Featured
See All Featured
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
110
Six Lessons from altMBA
skipperchong
29
4.2k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
The browser strikes back
jonoalderson
0
790
Agile that works and the tools we love
rasmusluckow
331
21k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Designing for Performance
lara
611
70k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
860
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.9k
How to Talk to Developers About Accessibility
jct
2
150
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
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は黒に メモリ領域が近いオブジェクトを効率的にスキャンできる