【cocos2dx】lua内存泄漏检测

    近几天发现公司项目(cocos2dx arpg手游)战斗这块出现了内存泄漏,lua层和C++层都有泄漏,挂几分钟lua内存额外增加了50M,打算优先从lua入手去查询,因为针对C++层,我相信目前使用的底层代码是比较稳定的,不会出现严重的泄漏现象,并且我有使用打印渲染树的方式检测过,不存在创建大量的节点并忘记手动remove的情况(这个是用于检测是否有节点创建后忘记释放导致内存泄漏的工具,是本人原创,在后面文章里面会分享),所以优先查lua这块的泄漏是比较合适的方法。

    本来打算用云风弄的一个检测lua内存泄漏的工具,但是发现好像解决不了问题,貌似那个工具的原理是取一段代码执行前后的内存snapshot进行比对,但是期间大量的变量创建及销毁,好像不太容易比对。刚好又看到一篇不错的文章,使用了弱引用的方式去检测。原理是:对一个lua对象进行引用,然后干掉该对象,只要还有一份引用存在,该对象就无法被干掉,也就是会泄漏;但是如果对一个lua对象进行弱引用,同样可以获得该对象的数据,并且当对象被干掉的时候,引用也会被干掉。用这个原理可以建立一份全局的弱引用表,通过引用对象的方式判断某个对象是否被释放干净。个人觉得这个方法应该会比较合适。


PS:感谢文章作者 寰子,并提供传送门:

http://blog.csdn.net/xocoder/article/details/42685685

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值