[发明专利]一种通过内存快照检测手机应用内存泄露的方法及装置在审
| 申请号: | 201710378992.5 | 申请日: | 2017-05-25 |
| 公开(公告)号: | CN107247658A | 公开(公告)日: | 2017-10-13 |
| 发明(设计)人: | 刘马良;张强;刘明诚;相晓静;张治良;沈旭军 | 申请(专利权)人: | 珠海金山网络游戏科技有限公司;珠海西山居移动游戏科技有限公司 |
| 主分类号: | G06F11/34 | 分类号: | G06F11/34;G06F11/30 |
| 代理公司: | 广州嘉权专利商标事务所有限公司44205 | 代理人: | 俞梁清 |
| 地址: | 519000 广东省珠*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 通过 内存 快照 检测 手机 应用 泄露 方法 装置 | ||
技术领域
本发明涉及手机应用内存优化领域,尤其涉及一种通过内存快照检测手机应用的内存泄露的方法及装置。
背景技术
在智能手机行业,随着手机应用的市场占有率越来越高,大部分的知名游戏开发公司都在手机游戏开发投入了较多的技术研发。随着手机游戏应用程序的复杂程度不断提高,其开发过程中不可避免地出现内存泄露的情况。存在内存泄漏的手机应用程序在运行一段时间后,占用系统的内存会越来越多,最后会被操作系统当成异常程序而杀掉。同时,内存泄漏还会使得内存自动回收机制频繁触发,从而影响手机应用性能,并造成手机应用的卡顿等影响用户体验的后果。
Unity作为一种广泛应用的手机应用开发引擎,采用Mono平台作为其C#虚拟机,且分配释放内存都使用Mono平台中的相关接口;因此实际开发过程中需要提供一种实时反馈机制来定位Mono平台的内存泄漏问题,使得手机应用开发人员能够更方便解决问题。目前内存快照比较是该平台比较常用的寻找内存泄漏的常用手段。具体地,手机应用开发人员将两次内存的状态截取出来后再进行比较,可以清楚地发现内存的变化,寻找内存的增量与泄漏点。鉴于上述原因,手机应用开发人员需要一套在手机应用运行期间的内存快照文件对比工具,以实时获取当前时刻手机游戏应用程序从操作系统分配所得的内存快照记录,从而可以通过对比执行某些操作的前后的两个内存快照记录,定位程序运行过程中的内存泄露问题。
发明内容
本发明的目的是解决现有技术的不足,提供一种通过内存快照检测手机应用内存泄露的方法,能够获得在手机应用运行期实时,将可能发生泄漏的对象二进制数据导出为可疑泄漏对象表的外部文件中,协助手机应用开发人员快速定位手机应用内存泄漏问题的效果。
为了实现上述目的,本发明提出一种通过内存快照检测手机应用内存泄露的方法,用于安卓智能手机中基于Unity引擎开发的程序,包括如下步骤:
S100)启动被检测手机应用,并监视该手机应用进程;
S200)执行第一操作步骤,触发Unity引擎的Mono平台内存使用变化,并保存第一内存快照记录;
S300)执行第二操作步骤,触发Unity引擎的Mono平台内存使用变化,并保存第二内存快照记录;
S400)通过对比该第一内存快照记录和该第二内存快照记录,实时将该第二内存快照记录新增对象的信息导出到外部文件。
在本发明的上述方法中,步骤S100是使用进程注入的方式监视该手机应用进程。
进一步地,步骤S200和步骤S300是通过监视Unity引擎对应函数接口的方式,使得该第一操作步骤和该第二操作步骤被执行后,触发Unity引擎的Mono平台内存使用变化,并分别地保存为该第一内存快照记录和该第二内存快照记录。
在本发明的上述方法中,步骤S400导出的信息包括对象类型、大小和详细的二进制数据。
在本发明的上述方法中,步骤S400导出到外部文件的信息是可标识的。
本发明也提出了一种通过内存快照检测手机应用内存泄露的装置,用于安卓智能手机中基于Unity引擎开发的程序,包括以下模块:
启动模块,用于启动被检测手机应用,并监视该手机应用进程;
触发模块,用于手机应用开发人员在执行第一操作步骤或第二操作步骤后,发出保存当前Unity引擎的Mono平台内存快照的消息;
保存模块,用于接收保存触发Unity引擎的Mono平台内存快照的消息后,保存第一内存快照记录或第二内存快照记录;
导出模块,用于通过对比该第一内存快照记录和该第二内存快照记录,实时将该第二内存快照记录新增对象的信息导出到外部文件。
在本发明的上述装置中,该启动模块是使用进程注入的方式监视该手机应用进程。
进一步地,该触发模块通过监视Unity引擎对应函数接口的方式,使得该第一操作步骤或该第二操作步骤被执行后,发出保存Unity引擎的Mono平台内存快照的消息,且该保存模块保存该第一内存快照记录或该第二内存快照记录。
在本发明的上述装置中,该导出模块导出的信息包括对象类型、大小和详细的二进制数据。
在本发明的上述装置中,该导出模块导出到外部文件的信息是可标识的。
本发明还提供了一种计算机可读介质,包含用于执行上述通过内存快照检测手机内存泄露方法的指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海金山网络游戏科技有限公司;珠海西山居移动游戏科技有限公司,未经珠海金山网络游戏科技有限公司;珠海西山居移动游戏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710378992.5/2.html,转载请声明来源钻瓜专利网。





