Skip to main content

Command Palette

Search for a command to run...

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

Updated
3 min read
Garbage Collector (GC) යනු කුමක්ද? – Heap Memory පිරිසිදු කරන ක්‍රියාවලිය
H

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 එකක උදාහරණයක් සලකා බලමු.

  1. Allocation – පාරිභෝගිකයෙකුට මේසයක් වෙන් කිරීම

  2. Usage – පාරිභෝගිකයා මේසය භාවිතා කරමින් ආහාර ගැනීම

  3. Unused – පාරිභෝගිකයා පිටව ගිය පසු මේසය හිස් වීම

  4. 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 මත අවධානය යොමු කළ හැක.

More from this blog

Primitive Type සහ Reference Type කියන්නේ මොනවද?

Programming language වල Data Store කරන විදි දෙකක් තියෙනවා: Primitive Types Reference Types (Non-Primitive Types) මේ දෙක අතර මූලික වෙනස තියෙන්නේ Memory එකේ Data තියෙ​න විදිහ. Primitive Types කියන්නේ මොනවද? Primitive type එකක් කියන්නේ simple value...

Jan 24, 20263 min read
Primitive Type සහ Reference Type කියන්නේ මොනවද?

Stack vs Heap memory

පරිගණක ක්‍රමලේඛනයේදී (Computer Programming) memory කළමනාකරණය (Memory Management) ඉතා වැදගත් වේ. ඕනෑම මෘදුකාංගයක් ක්‍රියාත්මක වන විට, එයට අවශ්‍ය දත්ත ගබඩා කර තබා ගැනීමට RAM (Random Access Memory) භාවිතා කරයි. මෙම මතකය(Random Access Memory) ප්‍රධාන වශය...

Jan 24, 20263 min read
Stack vs Heap memory

What is a Protocol (ප්‍රොටෝකෝලයක්)?

සරලවම කිව්වොත්, Protocol එකක් කියන්නේ "නීති මාලාවක්" (Set of Rules). රෙස්ටුරන්ට් එකේ වේට​ර් සහ ඔයා අතර ගනුදෙනුව සාර්ථක වෙන්න නම්, දෙන්නම එකම භාෂාවක් සහ එකම ආචාර විධි (Etiquette) පිළිපදින්න ඕන. ඔයා චීන භාෂාවෙන් කතා කරලා, වේට​ර් සිංහලෙන් උත්තර දුන්නොත...

Jan 22, 20263 min read
What is a Protocol (ප්‍රොටෝකෝලයක්)?

ලෝකේ බහුලවම භාවිතා වන API styles

API එකක් කියන්නේ මොකක්ද කියලා ඔයා දැන් දන්න​වා, හැබැයි කලින් Article එකේ මම කිව්​වා වගේ ලොකේ භාවි​තා වන විවිධ API styles තියෙනවා ඉතින් අද අපි බලමු ඒ මොනවද, ඒවගේ වෙනස්කම් මොනවද කියලා. ඉදිරියට යන්න කලින් පොඩි පැහැදිලි කිරීමක්:මේ ලිපිය පුරාවටම අපි උදාහර...

Jan 22, 20264 min read
ලෝකේ බහුලවම භාවිතා වන API styles
K

KodeXEdu

6 posts

We simplify complex programming concepts in Sinhala for beginners.