2015-10-14 34 views
2


我使用Lua涉足Love2D,剛剛實現了一個StateMachine來處理一組狀態之間的轉換,例如, IntroState,MenuState,PlayState等。如何在Lua中獲取「sizeof」表格?

在以前的節目我usally釋放只是一個「一次性交易」對象和/或狀態,督察將只應用程序的生命週期中呈現給玩家一次。在C++中,我使用sizeof運算符,它返回傳遞對象的字節大小,只是爲了獲得我在某個點釋放多少內存的一些反饋。

是否有任何對應關鍵字或詭計在Lua中實現?

+1

有[getsize](https://github.com/siffiejoe/lua-getsize),一個可以做到這一點的外部模塊。它僅適用於PUC-Rio Lua(不包括LuaJIT),因爲它訪問內部數據結構。然而,Lua會保留對象的內存,直到它們無法訪問*和*垃圾收集器回收它們,這可能會晚得多,所以這樣的反饋在Lua中沒有多大意義。 – siffiejoe

回答

2

如果您需要細粒度的信息,您可以使用getsize作爲@siffiejoe結合某些表遍歷來獲取所有本地和全局對象。如果您需要更粗粒度的方法,則可以使用collectgarbage('count')來獲取Lua使用的總內存。

This SO answerthis lua discussion on memory tracking可能會有所幫助。請注意,您無法控制內存釋放,因爲它由垃圾收集器處理(儘管可以調整幾個GC設置)。