如何在 Lua 中获得表的 "sizeof"?

我正在使用Lua的Love2D进行探索,刚刚实现了一个状态机来处理状态之间的转换,例如IntroState,MenuState,PlayState等。

在以前的程序中,我通常会释放仅为“一次性交易”的对象和/或状态,即在应用程序的生命周期中仅向玩家呈现一次。在C++中,我使用sizeof操作符,它返回传递对象的字节数,以获得在某个点释放的内存量的一些反馈。

在Lua中是否有任何相应的关键字或技巧可实现此功能?

点赞
用户1442917
用户1442917

如果您需要精细的信息,您可以使用 @ siffiejoe 提到的 getsize 以及一些表遍历来获取所有本地和全局对象。如果您需要更粗糙的方法,您可以使用“collectgarbage('count')”来获取Lua使用的总内存。

这个 SO 回答这个关于内存跟踪的 lua 讨论 可能会有所帮助。请注意,您无法控制内存释放,因为它由垃圾回收器处理(尽管有多个 GC 设置可以调整)。

2015-10-14 14:11:22