Garbag Collector در لوا و آزاد کردن رم :
برای آزاد کردن حافظه بعد از حذف آرایه ای که از ریشه اون آرایه رو nil کردین (nil کردن اعضای اون آرایه مهم نیست و تاثیری در کار نداره) فقط کافیه تابع
را بدون هیچ آرگومان ورودی ای اجرا کنید (بعد از nil کردن ریشه ی آرایه یا متغییر) تا گربگ کالکتور لوا ، حافظه ای که برای اون آرایه در نظر گرفته بود رو آزاد کنهکد:collectgarbage();
مثال درست (این مثال درست هست چون آرایه از ریشه nil شد) . در یک رویداد این کد رو بنویسید تا رمتون تا 500 مگ اشغال بشه:
و در رویدادی که میخواین آزاد بشه رم تون از این آرایه ، این کد رو بنویسین :کد:arr={}; for i=1,20000000 do arr[i] = "abcdefghijklmnopqrstuvwxyz" end
کد:arr=nil; collectgarbage();
مثال نادرست (این مثال نادرست هست چون ریشه ی آرایه رو nil نکردیم و فقط کل اعضای اون آرایه رو nil کردیم که جواب نمیده) . در یک رویداد همون کد اولی :
در یک رویداد دیگه (که البته رمتون آزاد نمیشه و کد کار نمیکنه) :کد:arr={}; for i=1,20000000 do arr[i] = "abcdefghijklmnopqrstuvwxyz" end
کد:for i=1,20000000 do arr[i] = nil; end collectgarbage();






پاسخ با نقل قول
Bookmarks