lua自身也有自己的垃圾回收机制
垃圾回收算法都是用的标记清扫方式,也就是说不管对象间的引用有多复杂,只要没有被对象根结点直接或间接引用,都是可以被当做垃圾清理掉。
所以我们要避免一些gc的操作和导致根节点的循环引用导致内存泄漏。
1.同样的如果需要释放的内容一定要记得在结束后设置为nil(这个比较基础)
2.避免匿名函数,每次执行匿名函数都会导致内存消耗,lua并没有去释放匿名函数。看一个前后的例子

类似这种匿名函数,而且还在update中执行就会有每帧的消耗。(其中一帧的截图)
![]()
而改为普通函数执行后:

![]()
3.循环引用:


本文探讨了Lua的垃圾回收机制,重点介绍了标记清扫算法如何避免内存泄漏。文章提供了优化建议,如合理使用匿名函数、避免循环引用,并推荐了一个有用的内存分析工具。

1万+

被折叠的 条评论
为什么被折叠?



