Tri-color Marking
ট্রাই-কালার মার্কিং
Mark phase-এর abstract model — প্রতিটা object সাদা (unvisited), ধূসর (নিজে mark, children বাকি) বা কালো (পুরোপুরি শেষ); GC শেষ হলে সাদাই garbage।
সাদা → ধূসর : root/child প্রথম দেখা
ধূসর → কালো : children সব ধূসর হলো
কালো → সাদা : sweep
Model-টা কেন দরকার: incremental/concurrent GC-তে mutator mark চলার মাঝে pointer বদলায় — invariant ভাঙলে live object সাদা থেকে যায়।
- Strong tri-color invariant: কালো কখনো সরাসরি সাদাকে point করবে না — write barrier এটা enforce করে
- Weak invariant + SATB/incremental update: barrier দুই দিকের একটা রাখে
- প্রতিটা production collector (G1, ZGC, Go GC) এই vocabulary-তেই design document লেখে