Lua 實現了壹個增量標記清除的收集器。 它用兩個數字來控制垃圾收集周期: garbage-collector pause 和 garbage-collector step multiplier 。
garbage-collector pause 控制了收集器在開始壹個新的收集周期之前要等待多久。 隨著數字的增大就導致收集器工作工作的不那麽主動。 小於 1 的值意味著收集器在新的周期開始時不再等待。 當值為 2 的時候意味著在總使用內存數量達到原來的兩倍時再開啟新的周期。
step multiplier 控制了收集器相對內存分配的速度。 更大的數字將導致收集器工作的更主動的同時,也使每步收集的尺寸增加。 小於 1 的值會使收集器工作的非常慢,可能導致收集器永遠都結束不了當前周期。 缺省值為 2 ,這意味著收集器將以內存分配器的兩倍速運行。
妳可以通過在 C 中調用 lua_gc 或是在 Lua 中調用 collectgarbage 來改變這些數字。 兩者都接受百分比數值(因此傳入參數 100 意味著實際值 1 )。 通過這些函數,妳也可以直接控制收集器(例如,停止或是重啟)。
引用自:/2000/download/lua_manual.html