如何在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 设置)。