我目前正在使用Lua進行MOAI項目。我試圖爲某些遊戲對象設置一些壓力測試,然後在遊戲會話期間跟蹤我創建和銷燬的Lua對象的時間。我可以很容易地跟蹤「class」對象/表何時通過增加構造函數或初始化程序中的計數來初始化,但由於Lua沒有析構函數,所以我不知道如何跟蹤對象何時從內存中移除。此事。謝謝!Lua - 從內存中刪除對象時,遞減「class」對象計數
2
A
回答
2
要當一個Lua對象(我承擔全部用戶數據或表)走了通知,你爲它設置一個_gc metamethod。
1
也許弱表是你的答案,其中n esting。這裏有一個片段:
objectArray={}
function newObj(...)
--your OOP code here
--obj is the new table you made
objectArray[#objectArray+1]=setmetatable({obj},{__mode='v'})
end
如今,在功能/塊運行每一幀:
for i=1,#objectArray do --no pairs for efficiency, being run every frame this matters
local stillThere=#objectArray[i]
stillThere=stillThere==1
if not stillThere then deconstruct() end
end
不幸的是,你不能得到表背。我不確定是否有簡單的解決方案,因爲__index會暫停GC。
相關問題
- 1. 從鈦內存中刪除VAR對象
- 2. 從javascript中刪除內存對象
- 3. C++從內存中刪除對象
- 4. 從對象數組中刪除對象
- 5. 函數完成時,對象是否從內存中刪除了對象? Python的
- 6. 如何從對象數組中刪除(釋放內存)對象(動態內存對象分配)
- 7. 從對象列表中刪除對象
- 8. 什麼時候對自動釋放對象遞減計數?
- 9. 如何從RestKit託管對象存儲區中刪除對象
- 10. 在Django中刪除子對象時刪除父對象
- 11. 從CoreData中刪除對象
- 12. 從JSONArray中刪除對象
- 13. 從對象中刪除值
- 14. 從ArrayList中刪除對象
- 15. 從UINavigationController中刪除對象
- 16. 從NSMutableArray中刪除對象
- 17. 從observableArray中刪除對象
- 18. 從NSMutableArrays中刪除對象
- 19. 從IEnumerable中刪除對象
- 20. 從JavaScript對象遞歸刪除空值
- 21. 對象是存儲和從堆內存中刪除
- 22. 從moment.js對象中刪除時區
- 23. 何時從C++堆中刪除對象?
- 24. 從NSMutableArray中刪除對象時崩潰
- 25. 如何從jquery中的對象數組中刪除對象?
- 26. 從java中的對象數組中刪除對象
- 27. 使用計時器刪除對象
- 28. C++與LUA,對象設計
- 29. Java,確保從arrayList中刪除對象時正在刪除對象
- 30. 如何從地圖中刪除對象/實例後從內存中刪除?
我不認爲這將在MOAI工作,因爲它使用Lua 5.1。另外'debug'和'newproxy'不可用。 – finnw 2013-03-14 23:24:36
@finnw,你說得對,如果對象是純粹的Lua表,那麼就沒有辦法獲得gc通知。我認爲他們是用C創建的用戶數據 – lhf 2013-03-15 00:30:25