Lua游戏内存泄漏检查
来源:互联网 发布:比特精灵 for mac 编辑:程序博客网 时间:2024/05/20 03:44
上一篇我们对Lua对象释放做了一些初步了解,那么在这一节中,我就简单介绍两种Lua内存泄漏检查的常用方法。
内存快照
对于内存快照,目前用得最多的是云风大大开源在github上的snapshot库。原文链接
它提供一个函数,可以对当前的 Lua State 做一个完整的快照,为了减少分析数据,只记录了复杂对象的引用关系。也就是记录记录下所有 table thread userdata function 间的引用。
我们可以在不同时间,对 Lua State 拍两个快照,相比较后,就很容易知道新增加的内存处于何处。
_G表遍历
方案一、从_G开始遍历整个Lua节点,包括table,metatable,和函数的upvalue的引用的统计个数,在引用计数找出异常的节点。
方案二、从_G开始遍历整个Lua节点,记录整个节点树,在不同时间比较检查新增的节点。
当然,_G表遍历也存在不少坑,例如单例,引用变量等都可能引起死循环,这个得注意。
在排查过程中,我们也应该懂得过滤一些干扰项。比如下面几种类型是引用类型,并不是值类型,所以往往赋值操作后,内存快照也会把这些匹配出来。
Tables、functins、threads、userdata。对于这几种值类型,其变量皆为引用类型(变量本身不存储类型数据,而是指向它们)。赋值、参数传递、函数返回等都操作的是这些值的引用,并不产生任何copy行为。
0 0
- Lua游戏内存泄漏检查
- 【Lua】lua内存泄漏
- 游戏逻辑层在Lua中的内存泄漏与防范
- 内存泄漏检查
- 转贴:内存泄漏检查
- vc 内存泄漏检查
- 内存泄漏检查技术
- 内存泄漏检查
- 检查内存泄漏 工具
- mtrace检查内存泄漏
- HookLogger检查内存泄漏
- mtrace检查内存泄漏
- mtrace检查内存泄漏
- VC 内存泄漏 检查
- 内存泄漏检查技术
- c内存泄漏检查
- VC内存泄漏检查
- 内存泄漏检查方法
- Android调用系统 拍照 相册 适配所有版本 7.0 恢复自动旋转
- WORD2013 如何编辑章节标题以及修改样式
- Error:Execution failed for task ':demo_project:transformNative_libsWithStripDebugSymbolForDebug'. >
- 免安装版MySQL的优化与配置
- Ajax 接收服务器返回的json响应
- Lua游戏内存泄漏检查
- Zookeeper的Watcher
- 创建手机页面
- 梯度下降的一阶泰勒公式展开证明
- Python操作中出现中文乱码等问题
- Android Vitamio播放视频有声音无图像问题解决
- ftp上传下载-----打包下载、以流的形式传到前台页面
- linux(ftp服务器) vsftpd 配置文件详解
- 机器学习及其基础概念简介