Lua垃圾回收只有一個函數collectgarbage,第一個參數是字符串,代表操作類型,第二個參數只有某些操作有,是該操作所需要的參數。
操作類型:
stop停止垃圾收集。
restart重啓垃圾收集。
collect執行一個完整的垃圾收集循環。
count返回當前使用的內存,單位爲千字節。
step單步執行垃圾收集,第二個參數代表多少步。如果步長可以完成一次垃圾收集,則返回true。
setstepmul第二參數/100代表單步的速度,默認值爲200,代表是內存分配速度的兩倍。
setpause第二個參數/100代表在開始一個新的收集週期之前要等待多久。當這個值小於等於100的時候,就代表執行完一個週期之後不會等待,直接進入下一個週期。當這個值爲200的時候,就代表當內存達到上一個週期結束時的兩倍的時候,再進入下一個週期。
當設置了setstepmul和setpause,Lua便會開啓自動垃圾回收。
例如cocos2d-x中的設置:
- collectgarbage("setpause",100)
- collectgarbage("setstepmul",5000)
我們只需要將不適用的變量設置爲nil,它之前所引用的類型就會在一定時間內被自動回收。