【技术实现步骤摘要】
Flutter内存泄漏的检测方法及装置
[0001]本申请涉及信息安全
,尤其涉及一种Flutter内存泄漏的检测方法及装置。
技术介绍
[0002]Flutter是Google开源的用于构建用户界面(UI)的工具包,其基于dart语言开发,dart语言通过dart VM(Virtual Machine,虚拟机)的GC模块实现垃圾回收。
[0003]在一些场景下,对于本该被回收的对象,由于其被其他对象引用,GC模块无法将该对象检测为待回收对象,导致无法对该对象进行回收,从而导致该对象所占用的内存无法被重新分配,使得应用的可使用内存减少,即内存泄漏。若内存泄漏场景持续存在,则应用的可用内存会持续降低,而可用内存降低,又会引发dart VM频繁调用GC模块,从而导致应用卡顿甚至应用奔溃。
技术实现思路
[0004]本申请提供了一种Flutter内存泄漏的检测方法及装置,以解决Flutter内存泄漏场景无法被正确检测的技术问题。
[0005]为了解决上述技术问题,第一方面,本申请实施例提供了一 ...
【技术保护点】
【技术特征摘要】
1.一种Flutter内存泄漏的检测方法,其特征在于,包括:获取待检测页面的实例对象;遍历所述实例对象中的第一目标字段,得到与待检测页面对应的data数组;遍历所述data数组中的第二目标字段是否为预设值;若所述第二目标字段不为预设值,则判定所述待检测页面存在内存泄漏。2.如权利要求1所述的Flutter内存泄漏的检测方法,其特征在于,所述获取待检测页面的实例对象,包括:基于虚拟机服务器VmService,确定所述待检测页面的虚拟机VM对象;确定所述VM对象的第一对象ID以及所述VM对象所在目标线程的线程ID;根据所述线程ID和所述第一对象ID,获取所述待检测页面的实例对象。3.如权利要求2所述的Flutter内存泄漏的检测方法,其特征在于,所述确定所述VM对象的第一对象ID以及所述VM对象所在目标线程的线程ID,包括:遍历所述VmService中的所有线程,匹配得到与所述VM对象对应的目标线程的线程ID;基于预设的invoke顶层函数,获取所述VM对象的第一对象ID。4.如权利要求2所述的Flutter内存泄漏的检测方法,其特征在于,所述根据所述线程ID和所述第一对象ID,获取所述待检测页面的实例对象,包括:调用所述VmService的实例对象获取函数;将所述线程ID和所述第一对象ID作为所述实例对象获取函数的输入参数,返回所述待检测页面的实例对象。5.如权利要求1至4任一项所述的Flutter内存泄漏的检测方法,其特征在于,所述若所述第二目标字段不为预设值,则判定所述待检测页面存在内存泄漏之后,还包括:获取所述待检测页面的引用路径节点,所述引用路径节点为引...
【专利技术属性】
技术研发人员:舒伟,郭曼丽,
申请(专利权)人:广州心娱网络科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。