如何在Lua中得到"sizeof"一个table?
How to get "sizeof" a table in Lua?
我正在使用 Lua 涉足 Love2D,并且刚刚实现了一个 StateMachine 来处理一组状态之间的转换,例如IntroState、MenuState、PlayState 等..
在以前的程序中,我通常会释放对象 and/or 状态,它们只是 "one-time-deal",在应用程序的生命周期内,iow 只会呈现给玩家一次。在 C++ 中,我使用 sizeof
运算符 returns 传递对象的大小(以字节为单位),只是为了获得一些关于我在某个时间点释放了多少内存的反馈。
在 Lua 中是否有任何 对应的 关键字或技巧来实现此目的?
如果您需要细粒度的信息,您可以像@siffiejoe 提到的那样使用 getsize 并结合一些 table 遍历来获取所有本地和全局对象。如果您需要更粗粒度的方法,您可以使用 collectgarbage('count')
来获取 Lua.
使用的总内存
This SO answer and this lua discussion on memory tracking 可能会有一些帮助。请注意,您无法控制内存释放,因为它由垃圾收集器处理(尽管您可以调整多个 GC 设置)。
我正在使用 Lua 涉足 Love2D,并且刚刚实现了一个 StateMachine 来处理一组状态之间的转换,例如IntroState、MenuState、PlayState 等..
在以前的程序中,我通常会释放对象 and/or 状态,它们只是 "one-time-deal",在应用程序的生命周期内,iow 只会呈现给玩家一次。在 C++ 中,我使用 sizeof
运算符 returns 传递对象的大小(以字节为单位),只是为了获得一些关于我在某个时间点释放了多少内存的反馈。
在 Lua 中是否有任何 对应的 关键字或技巧来实现此目的?
如果您需要细粒度的信息,您可以像@siffiejoe 提到的那样使用 getsize 并结合一些 table 遍历来获取所有本地和全局对象。如果您需要更粗粒度的方法,您可以使用 collectgarbage('count')
来获取 Lua.
This SO answer and this lua discussion on memory tracking 可能会有一些帮助。请注意,您无法控制内存释放,因为它由垃圾收集器处理(尽管您可以调整多个 GC 设置)。