Manual Garbage Collection Control (collectgarbage ফাংশন)

Garbage Collection in Lua (গারবেজ কালেকশন) - লুয়া (Lua) - Computer Programming

251

লুয়া ভাষায় গার্বেজ কালেকশন (Garbage Collection) অটোমেটিকভাবে পরিচালিত হয়, তবে কখনও কখনও ডেভেলপারদের ম্যানুয়ালি গার্বেজ কালেকশন কন্ট্রোল করতে হতে পারে, যেমন মেমরি ব্যবস্থাপনা অপটিমাইজ করতে বা নির্দিষ্ট সময় বা পরিস্থিতিতে কালেকশন চালাতে। লুয়া ভাষায় গার্বেজ কালেকশন নিয়ন্ত্রণের জন্য collectgarbage ফাংশনটি ব্যবহার করা হয়।

গার্বেজ কালেকশন কন্ট্রোলের উদ্দেশ্য:

  • অপ্রয়োজনীয় বা অপরিষ্কৃত মেমরি এলাকা মুক্ত করা।
  • মেমরি ব্যবস্থাপনা উন্নত করা।
  • গার্বেজ কালেকশন প্রক্রিয়ার সময় নিয়ন্ত্রণ করা।

১. collectgarbage ফাংশনের সিনট্যাক্স

লুয়া ভাষায় collectgarbage ফাংশনটি মেমরি কালেকশন এবং সম্পর্কিত অপারেশন পরিচালনা করতে ব্যবহৃত হয়। এর দুটি প্রধান ব্যবহার:

  1. collectgarbage("collect"): গার্বেজ কালেকশন চালানো।
  2. collectgarbage("stop"): গার্বেজ কালেকশন বন্ধ করা।
  3. collectgarbage("restart"): গার্বেজ কালেকশন পুনরায় শুরু করা।
  4. collectgarbage("count"): বর্তমানে ব্যবহৃত মেমরি পরিমাণ জানানো।
  5. collectgarbage("setpause", value): গার্বেজ কালেকশনের পজ (pause) সেট করা।
  6. collectgarbage("setstepmul", value): গার্বেজ কালেকশনের স্টেপ (step) মাল্টিপ্লায়ার সেট করা।

২. বিভিন্ন অপশন ব্যবহার

২.১. গার্বেজ কালেকশন চালানো (Collect)

এই অপশনটি অপ্রয়োজনীয় মেমরি এলাকা মুছে ফেলার জন্য গার্বেজ কালেকশন চালাতে ব্যবহার করা হয়।

collectgarbage("collect")

এটি ম্যানুয়ালি গার্বেজ কালেকশন চালাবে এবং অপ্রয়োজনীয় মেমরি এলাকা পরিষ্কার করবে।

২.২. গার্বেজ কালেকশন বন্ধ করা (Stop)

গার্বেজ কালেকশন বন্ধ করতে collectgarbage("stop") ফাংশন ব্যবহার করা হয়।

collectgarbage("stop")

এটি গার্বেজ কালেকশন বন্ধ করে দেবে, যার ফলে মেমরি কালেকশন চলবে না, যতক্ষণ না আপনি ম্যানুয়ালি আবার এটি শুরু করেন।

২.৩. গার্বেজ কালেকশন পুনরায় শুরু করা (Restart)

গার্বেজ কালেকশন আবার শুরু করতে collectgarbage("restart") ফাংশন ব্যবহার করা হয়।

collectgarbage("restart")

এটি গার্বেজ কালেকশন পুনরায় শুরু করবে, যদি তা পূর্বে বন্ধ করা থাকে।

২.৪. ব্যবহৃত মেমরি পরিমাণ দেখতে (Count)

এটি বর্তমানে ব্যবহৃত মেমরি পরিমাণ (বাইটে) রিটার্ন করবে।

local memoryUsed = collectgarbage("count")
print("Memory used: " .. memoryUsed .. " KB")

এখানে, collectgarbage("count") মেমরি ব্যবহারের পরিমাণ দেখাবে, যা সাধারণত কিলোবাইটে রিটার্ন হয়।


৩. গার্বেজ কালেকশনের পজ (Pause) এবং স্টেপ মাল্টিপ্লায়ার (Step Multiplier)

লুয়া গার্বেজ কালেকশন থ্রেশহোল্ড এবং এর কার্যক্ষমতার উপর নিয়ন্ত্রণ করতে setpause এবং setstepmul ব্যবহার করা হয়।

৩.১. setpause ব্যবহার

setpause গার্বেজ কালেকশনের থ্রেশহোল্ড নির্ধারণ করে, যার মাধ্যমে গার্বেজ কালেকশন কতটুকু সময় পর পর কাজ করবে তা নির্ধারণ করা যায়।

collectgarbage("setpause", 200)  -- পজ থ্রেশহোল্ড 200 তে সেট করা

এটি গার্বেজ কালেকশন কতবার পর পর চলবে তা কন্ট্রোল করে।

৩.২. setstepmul ব্যবহার

setstepmul গার্বেজ কালেকশনের গতি নিয়ন্ত্রণ করে, অর্থাৎ কত দ্রুত গার্বেজ কালেকশন সম্পন্ন হবে তা নির্ধারণ করে।

collectgarbage("setstepmul", 500)  -- স্টেপ মাল্টিপ্লায়ার 500 এ সেট করা

এটি গার্বেজ কালেকশন সম্পন্ন হওয়ার গতি বাড়িয়ে বা কমিয়ে দেয়।


৪. গার্বেজ কালেকশন কন্ট্রোল উদাহরণ

এখানে একটি উদাহরণ দেখানো হয়েছে যেখানে গার্বেজ কালেকশন কিছু সময় পর পর চালানো হয় এবং ব্যবহৃত মেমরি পরিমাণও চেক করা হয়।

-- গার্বেজ কালেকশন কন্ট্রোল
print("Before collection:")
print("Memory used: " .. collectgarbage("count") .. " KB")

-- মেমরি পরিস্কার করা
collectgarbage("collect")

print("After collection:")
print("Memory used: " .. collectgarbage("count") .. " KB")

এই উদাহরণে, প্রথমে ব্যবহৃত মেমরি পরিমাণ দেখানো হয়, তারপর collectgarbage("collect") ব্যবহার করে গার্বেজ কালেকশন চালানো হয়, এবং আবার মেমরি পরিমাণ চেক করা হয়।


সারসংক্ষেপ

লুয়া ভাষায় গার্বেজ কালেকশন পরিচালনা করার জন্য collectgarbage ফাংশনটি ব্যবহার করা হয়। এটি বিভিন্ন অপশন দিয়ে গার্বেজ কালেকশন কন্ট্রোল করতে সহায়তা করে:

  • collect: গার্বেজ কালেকশন চালানো।
  • stop: গার্বেজ কালেকশন বন্ধ করা।
  • restart: গার্বেজ কালেকশন পুনরায় শুরু করা।
  • count: ব্যবহৃত মেমরি পরিমাণ দেখানো।
  • setpause: গার্বেজ কালেকশনের পজ থ্রেশহোল্ড কনফিগার করা।
  • setstepmul: গার্বেজ কালেকশনের গতি নিয়ন্ত্রণ করা।

এই ফাংশনগুলি ব্যবহারের মাধ্যমে আপনি লুয়া প্রোগ্রামিংয়ে মেমরি ব্যবস্থাপনা আরও কার্যকরভাবে করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...