所有對象,包括表,用戶數據,函數,線程,字符串等受自動內存管理。 Lua使用增量標記和使用兩個數字來控制其垃圾回收周期即垃圾收集暫停和垃圾收集器的步驟事半功倍清除收集器。這些值是在百分比和100的值是常等于1。
垃圾收集暫停
垃圾收集停頓被用于控制多長時間的垃圾收集器需要等待,之前;它是由Lua的自動內存管理再次調用。數值低于100就意味著Lua中不會等待下一個周期。此值的類似地較高的值將導致垃圾收集器是緩慢的并且性質上較不積極。200表示該集合等待的總內存在使用中要開始一個新的周期開始前的兩倍。因此,根據不同的性質和應用的速度,有可能要求改變該值來獲得在Lua應用的最佳性能。
垃圾收集器的步驟事半功倍
這一步乘數控制垃圾收集在Lua程序的內存分配的相對速度。較大的步長值將導致垃圾收集器要更侵蝕性,同時也提高了垃圾收集的每個增量步的步長大小。值小于100可能經常導致避免垃圾收集器沒有完成其周期和其一般不是優選的。默認值是200,這意味著垃圾收集器運行的兩倍的內存分配的速度。
垃圾收集器函數
mytable = {"apple", "orange", "banana"}
print(collectgarbage("count"))
mytable = nil
print(collectgarbage("count"))
print(collectgarbage("collect"))
print(collectgarbage("count"))
顯然我們可以改變,如果需要使用垃圾收集器的這些功能行為。這些功能提供了一點額外的能力,為開發者處理復雜情況。根據不同的內存需要執行程序類型,可能會或可能不會使用此功能。但在應用程序的內存使用情況,并在程序本身,以避免在部署后不想要對結果進行檢查。