Foundationপ্রথম নীতি থেকে
LEVEL 5 · Programming Languages

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 লেখে