Lua 的 collectgarbage 函數 是用於控制垃圾回收機制的重要工具。該函數提供了多種操作模式來管理內存回收:

基本語法:

collectgarbage(opt [, arg])

主要操作選項:

  1. "collect" - 執行一次完整的垃圾回收循環
  2. "stop" - 暫停垃圾回收器
  3. "restart" - 重新啓動垃圾回收器
  4. "count" - 返回當前 Lua 使用的內存總量(以 KB 為單位)
  5. "step" - 執行單步垃圾回收
  6. "setpause" - 設置回收器的暫停參數
  7. "setstepmul" - 設置回收器的步進倍率

使用示例:

-- 獲取當前內存使用量
local mem = collectgarbage("count")
print("當前內存使用:", mem, "KB")

-- 強制進行垃圾回收
collectgarbage("collect")

-- 設置垃圾回收器參數
collectgarbage("setpause", 100)  -- 設置暫停參數為100%
collectgarbage("setstepmul", 200) -- 設置步進倍率為200%

應用場景:

  1. 遊戲開發中,在場景切換時手動觸發垃圾回收
  2. 長時間運行的服務程序中定期回收內存
  3. 內存敏感型應用的性能調優

注意事項:

  • 頻繁調用垃圾回收可能影響性能
  • 默認參數適用於大多數情況
  • 調優參數需要結合實際場景測試

內存統計 示例:

function printMemoryUsage()
    local mem = collectgarbage("count")
    print(string.format("內存使用: %.2f KB", mem))
end

通過合理使用 collectgarbage 函數,可以有效地管理 Lua 程序的內存使用,特別是在資源受限的環境中。