පලවෙනි වරට ඔබට int[] x = {1,2,3}; int[] y = x; y[0] = 99; කියලා ලියලා x[0] හි 99 එනවා දැකලා නම්, මේකේ පසුබැසි ලොජික් ගැන හොඳින් නොදැන සිටියා විය හැකිය. බොහෝ පිරිසක් "Variable එකක් බොක්ස් එකක් වගේ" කියලා සිතනවා, නමුත් ඇරේ, ලිස්ට් වගේ වස්තුවක් නම් එය තවත් දෙයක්.
Java (හෝ Python, JavaScript) වලදී variable එකක් නෝට් එකක් වගේ කල්පනා කරන්න. int[] x = {1,2,3} කියන විට, ඇරේ එකක් heap එකේ තැනේ ඉඳලා, x නෝට් එකේ ඒ තැනේ ලිපිනය (reference) ලියයි. y = x කියන විට, නව ඇරේ එකක් තැනෙන්නේ නැහැ – නෝට් එකේ ලිපිනය පිටපත් කරයි. ඒ නිසා y[0] = 99 කරද්දී, දෙකම එකම ඇරේ එක වෙනස් කරයි.
මෙම නෝට් (reference) ස්ථානය stack එකේ, ඇරේ (object) ස්ථානය heap එකේ. එක් මාර්ගයක් (reference) එකක් stack එකේ පවතින අතර, heap එකේ වස්තුව සියලු thread එකට හුවමාරු වේ. ඒ නිසා දෙකම එකම heap object එකට ඉඟියක් දෙනවා, නමුත් එක් එක් thread එකේ තමන්ගේම stack එකක් තියෙනවා.
ඇරේ එකක් new int[]{9,9,9} කියලා නැවත අලුත් reference එකක් assign කරන්නේ නම්, පරණ ඇරේ එක වෙනස් නොවේ – නෝට් එකට නව ලිපිනය ලියයි. මෙය mutation (වෙනස්කම) සහ reassignment (නව අර්ථය) අතර ඇති වෙනසයි.
ඉතින් private කියලා field එකක් ආරක්ෂා කරන්නේ නෝට් එක පමණයි, ඇත්ත object එක නොවේ. උදාහරණයක් ලෙස class Wallet { private int[] coins; } වලදී, constructor එකට caller‑ගේ ඇරේ එක pass කරලා, getter එකෙන් එය return කරලා නම්, ඕනෑම කෙනෙකුට එම ඇරේ එක modify කරගන්න පුළුවන්. ආරක්ෂා කිරීම සඳහා clone() භාවිතා කරලා copy කරලා ගත යුතුයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ බොහෝ විද්යාල, විශ්වවිද්යාල හා ආයතන Java, Python වැනි භාෂා භාවිතා කරයි. Stack‑Heap මූලධර්මය තේරුම් ගැනීමෙන්:
- ඉගෙනුම් ගත විෂයයන්හි බග් (bug) හඳුනා ගැනීම පහසු වේ.
- ආරක්ෂාකාරී code ලියලා, private field එකේ data leak වීම වැලැක්විය හැක.
- සැලසුම් (design) සම්බන්ධයෙන් memory leak, stack overflow වැනි ගැටළු වලට මුහුණ දීමට අවශ්ය පළපුරුද්ද ලැබේ.
ඉතිරිව, ශ්රී ලංකාවේ startups සහ software houses මත memory‑efficient application ලියන කුසලතා වැඩි වීම, පාරිභෝගිකයින්ට වේගවත්, ස්ථාවර සේවාවන් ලබා දීමට උපකාරී වේ.
අවසන් වශයෙන්, stack‑heap ව්යුහය හඳුනා ගැනීම ඔබේ code එකේ performance, security, scalability යන සියලුම අංශයන්ට මූලික වශයෙන් බලපායි. මේ මූලධර්මය හොඳින් අධ්යයනය කරලා, ඔබේ වැඩසටහන්වල අඩු memory usage සහ අඩු crash rate එකක් ලබා ගන්න.