Garbage Collector (GC) යනු කුමක්ද? – Heap Memory පිරිසිදු කරන ක්රියාවලිය

Hi, I’m Harsha Fernando. I love coding, learning new tech, and sharing knowledge in Sinhala. I write about programming, web development, and real-world projects.
කලින් ලිපියේදී Heap Memory එකේ දත්ත කළමනාකරණය කිරීම developerට හෝ ස්වයංක්රීය ක්රියාවලියකට පැවරෙන බව සාකච්ඡා කරා. මෙම ස්වයංක්රීය ක්රියාවලිය හඳුන්වන්නේ Garbage Collector (GC) ලෙසයි.
Garbage Collector යනු, Heap Memory තුළ භාවිතයෙන් ඉවත් වූ (unused) objects සොයාගෙන, ඒවා මකා දමා memory space එක නැවත නිදහස් කරන පද්ධතියකි.
1. Garbage Collector (GC) යනු කුමක්ද?
වැඩසටහනක් ක්රියාත්මක වන විට Heap Memory එක තුළ විවිධ objects නිර්මාණය වේ. කාලය ගතවෙද්දී එම objects සමහරක්:
තවදුරටත් program එකේ භාවිතා නොවේ
reference එකක් නොමැතිව “unreachable” බවට පත්වේ
මෙවැනි objects memory එකේ ඉඩක් අරගෙන සිටීම ගැටලුවකි. Garbage Collector:
එවැනි unreachable objects හඳුනාගනී
ඒවා delete කරයි
memory space නැවත free කරයි
Java, Python, C# වැනි භාෂා වල GC built-in ලෙස ඇත.
2. Garbage Collection තේරුම් ගැනීමට සරල උදාහරණයක්
Restaurant එකක උදාහරණයක් සලකා බලමු.
Allocation – පාරිභෝගිකයෙකුට මේසයක් වෙන් කිරීම
Usage – පාරිභෝගිකයා මේසය භාවිතා කරමින් ආහාර ගැනීම
Unused – පාරිභෝගිකයා පිටව ගිය පසු මේසය හිස් වීම
Garbage Collection – සේවකයෙකු මේසය පිරිසිදු කර නැවත භාවිතයට සූදානම් කිරීම
මෙහි “සේවකයා” Garbage Collector ලෙස සැලකිය හැක. සේවකයා නැති උනොත් මේසය අස් කරන්න කවුරුත් නැති වෙලා අන්තිමට Restaurant එකට කවුරුත් එන එකක් නෑ අපිරිසිදුයි කියලා. ඒ වගේ තමයි Garbage Collector එක නැති උනොත්, memory එකේ ඉඩ නැති වෙලා Out of Memory errors ඇති විය හැක.
3. Garbage Collector ක්රියා කරන මූලික ආකාරය
බොහෝ GC implementations, Mark and Sweep සංකල්පය මත ක්රියා කරයි.
3.1 Marking (සලකුණු කිරීම)
GC memory scan කරයි.
තවදුරටත් program එකෙන් reach කළ හැකි objects (live objects) සලකුණු කරයි.
reach කළ නොහැකි objects (unreachable objects) හඳුනාගනී.
3.2 Sweeping (පිරිසිදු කිරීම)
Marking වලින් හදුනාගත් unreachable objects delete කරයි.
ඒවා අල්ලගෙන සිටි memory space free කරයි.
4. Code Example
class Person {
String name;
}
Person p = new Person();
p = null;
p variable එක null කිරීමට පසු, එම Person object එකට reference(unreachable objects) එකක් නොමැති බැවින්, එය GC එකට මකා දැමීමට සුදුසු වේ.
5. Garbage Collector හි වාසි
Programmerට memory manually manage කිරීමට අවශ්ය නැත.
Memory leaks ඇති වීමේ අවදානම අඩු කරයි.
Dangling pointer errors වළක්වයි.
Large scale applications සඳහා ආරක්ෂිතයි.
6. Garbage Collector හි අවාසි
GC ක්රියාත්මක වීමට CPU resources භාවිතා වේ.
GC run වන කාලයේ application සුළු මොහොතකට pause විය හැක.
Real-time systems සඳහා සෑම විටම සුදුසු නොවිය හැක.
7. Manual vs Automatic Memory Management
7.1 Manual Memory Management (C / C++)
Programmer memory allocate කරයි (
malloc,new).Programmer memory free කළ යුතුය (
free,delete).Free කිරීමට අමතක වුවහොත් memory leaks ඇතිවේ.
7.2 Automatic Memory Management (Java / Python / C#)
Garbage Collector memory manage කරයි.
Programmer memory deallocation ගැන සෘජුව සැලකිලිමත් විය යුතු නැත.
8. සාරාංශය
Garbage Collector යනු:
Heap Memory තුළ භාවිතයෙන් ඉවත් වූ objects හඳුනාගන්නා
ඒවා මකා memory space free කරන
modern programming languages වල අත්යවශ්ය automation ක්රියාවලියකි.
GC නිසා programmerට memory management වෙනුවට application logic සහ features මත අවධානය යොමු කළ හැක.





