lua 語法-垃圾回收

Lua垃圾回收只有一個函數collectgarbage,第一個參數是字符串,代表操作類型,第二個參數只有某些操作有,是該操作所需要的參數。


操作類型:

stop停止垃圾收集。

restart重啓垃圾收集。

collect執行一個完整的垃圾收集循環。

count返回當前使用的內存,單位爲千字節。

step單步執行垃圾收集,第二個參數代表多少步。如果步長可以完成一次垃圾收集,則返回true。

setstepmul第二參數/100代表單步的速度,默認值爲200,代表是內存分配速度的兩倍。

setpause第二個參數/100代表在開始一個新的收集週期之前要等待多久。當這個值小於等於100的時候,就代表執行完一個週期之後不會等待,直接進入下一個週期。當這個值爲200的時候,就代表當內存達到上一個週期結束時的兩倍的時候,再進入下一個週期。



當設置了setstepmul和setpause,Lua便會開啓自動垃圾回收。

例如cocos2d-x中的設置:

[plain] view plain copy
  1. collectgarbage("setpause",100)  
  2. collectgarbage("setstepmul",5000)  
setpause爲100代表,垃圾收集不會停止,setsetpmul爲5000代表是內存分配速度的50倍。


我們只需要將不適用的變量設置爲nil,它之前所引用的類型就會在一定時間內被自動回收。

當設置了setstepmul和setpause,Lua便會開啓自動垃圾回收。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章