L33 — Memory Model, Escape Analysis & GC

Ba module tương tác để "chạm" vào cơ chế memory của Go: dự đoán escape của code snippet, xem GC tri-color mark từng bước, và tune GOGC để thấy trade-off latency vs throughput. Standalone — mở file:// là chạy được.

Module 1 — Escape analysis playground

Chọn 1 trong 8 snippet bên dưới, dự đoán xem biến chính trên stack hay heap, rồi reveal đáp án + output thật của go build -gcflags="-m".

Module 2 — Tri-color Mark & Sweep

12 object node + 1 root. Bấm Step để chạy mark phase từng bước theo BFS từ root. Mỗi bước: pop 1 grey object, push các neighbour reachable thành grey, mark object đó black. Cuối cùng: mọi node còn white = garbage.

White — chưa thăm
Grey — đang trong worklist
Black — đã mark xong
Bấm Step để bắt đầu mark phase từ root.

Module 3 — GOGC Tuner

Kéo slider GOGC từ 50 → 400. Chart mô phỏng heap grow theo thời gian: mỗi lần đạt heap_live × (1 + GOGC/100) thì GC chạy, drop heap về live. Quan sát trade-off: GOGC thấp = nhiều GC, pause/lần ngắn, peak heap thấp; GOGC cao = ít GC, pause dài, peak heap cao.

Live heap = lượng object thật sự còn reachable. GC không free được phần này.

Số GC trong 10s
Peak heap
Pause total
Profile