System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种内存泄露的分析方法、装置和电子设备制造方法及图纸_技高网

一种内存泄露的分析方法、装置和电子设备制造方法及图纸

技术编号:41179816 阅读:2 留言:0更新日期:2024-05-07 22:14
本公开提供一种内存泄露的分析方法、装置和电子设备,涉及安卓软件开发技术领域,用于解决如何提高内存泄露的分析效率。方法包括:获取内存压测程序在内存压测过程中产生的至少一个弱引用对象和上一次抓取内存快照的实际时间;对弱引用对象进行清理,确定存在未被清理的弱引用对象,且未被清理的弱引用对象的实际数量和实际时间满足预设条件时,向控制端发送用于关闭测试端的内存压测程序的终止请求;获取当前抓取的内存快照中指向未被清理的弱引用对象包括的目标对象的至少一条实际引用链路;根据实际引用链路,确定未被清理的弱引用对象包括的目标对象中每个目标对象的最短引用链路;根据最短引用链路,生成内存泄露的分析结果。

【技术实现步骤摘要】

本公开涉及安卓软件开发,尤其涉及一种内存泄露的分析方法、装置和电子设备


技术介绍

1、目前,在安卓软件开发
,在对应用程序(application,app)进行测试时,经常会出现已动态分配的堆内存由于某种原因程序未释放或无法释放的现象(这种现象也称为内存泄露)。为了找到内存泄露的原因,开发人员需要手动去检测app的程序代码,找出内存泄露的位置,并进行修复,以消除内存泄露的现象。上述方式虽然能够消除内存泄露的现象,但是需要耗费大量的时间去寻找内存泄露的位置,导致内存泄露的分析效率较低。

2、因此,如何提高内存泄露的分析效率成为了一个亟待解决的问题。


技术实现思路

1、为了解决上述技术问题,本公开提供了一种内存泄露的分析方法、装置和电子设备。

2、本公开的技术方案如下:

3、第一方面,本公开提供一种内存泄露的分析方法,包括:向控制端发送用于指示启动测试端的内存压测程序的测试请求;获取内存压测程序在内存压测过程中产生的至少一个弱引用对象和上一次抓取内存快照的实际时间;其中,弱引用对象至少包括命中了内存泄露的起点条件的目标对象;对弱引用对象进行清理,确定存在未被清理的弱引用对象,且未被清理的弱引用对象的实际数量和实际时间满足预设条件时,向控制端发送用于关闭测试端的内存压测程序的终止请求;获取当前抓取的内存快照中指向未被清理的弱引用对象包括的目标对象的至少一条实际引用链路;根据实际引用链路,确定未被清理的弱引用对象包括的目标对象中每个目标对象的最短引用链路;根据最短引用链路,生成内存泄露的分析结果。

4、第二方面,本公开提供一种内存泄露的分析装置,包括:发送单元,用于向控制端发送用于指示启动测试端的内存压测程序的测试请求;获取单元,用于获取内存压测程序在内存压测过程中产生的至少一个弱引用对象和上一次抓取内存快照的实际时间;其中,弱引用对象至少包括命中了内存泄露的起点条件的目标对象;处理单元,用于对获取单元获取的弱引用对象进行清理,确定存在未被清理的弱引用对象,且未被清理的弱引用对象的实际数量和获取单元获取的实际时间满足预设条件时,控制发送单元向控制端发送用于关闭测试端的内存压测程序的终止请求;获取单元,还用于获取当前抓取的内存快照中指向未被清理的弱引用对象包括的目标对象的至少一条实际引用链路;处理单元,还用于根据获取单元获取的实际引用链路,确定未被清理的弱引用对象包括的目标对象中每个目标对象的最短引用链路;处理单元,还用于根据最短引用链路,生成内存泄露的分析结果。

5、第三方面,本公开提供一种电子设备,包括:存储器和处理器,存储器用于存储计算机程序;处理器用于在执行计算机程序时,使得电子设备实现如上述第一方面提供的任一项内存泄露的分析方法。

6、第四方面,本公开提供一种计算机可读存储介质,包括:计算机可读存储介质上存储有计算机程序,当计算机程序被计算设备执行时,使得计算设备实现如上述第一方面提供的任一项内存泄露的分析方法。

7、第五方面,本专利技术提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如第一方面提供的任一项的内存泄露的分析方法。

8、需要说明的是,上述计算机指令可以全部或者部分存储在第一计算机可读存储介质上。其中,第一计算机可读存储介质可以与内存泄露的分析装置的处理器封装在一起的,也可以与内存泄露的分析装置的处理器单独封装,本公开对此不作限定。

9、本公开中第二方面、第三方面、第四方面以及第五方面的描述,可以参考第一方面的详细描述;并且,第二方面、第三方面、第四方面以及第五方面的描述的有益效果,可以参考第一方面的有益效果分析,此处不再赘述。

10、在本公开中,上述内存泄露的分析装置的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本公开类似,属于本公开权利要求及其等同技术的范围之内。

11、本公开的这些方面或其他方面在以下的描述中会更加简明易懂。

12、本公开提供的技术方案与现有技术相比具有如下优点:

13、通过控制端控制测试端的内存压测程序的开启和关闭,从而可以避免测试端出现无法及时关闭内存压测程序,任由内存压测程序继续进行压测,导致app被关闭的问题。如此,在对app进行压测时,app通过向控制端发送测试请求,从而控制端开启测试端的内存压测程序。测试端在运行内存压测程序时,app可以获取到内存压测程序在内存压测过程中产生的至少一个弱引用对象和上一次抓取内存快照的实际时间。之后,app通过对弱引用对象进行清理,确定存在未被清理的弱引用对象,且未被清理的弱引用对象的实际数量和实际时间满足预设条件时,app向控制端发送终止请求。这样,控制端就可以及时地关闭测试端的内存压测程序。之后,app通过获取当前抓取的内存快照中指向未被清理的弱引用对象包括的目标对象的至少一条实际引用链路,并根据实际引用链路,确定未被清理的弱引用对象包括的目标对象中每个目标对象的最短引用链路。最后,测试端根据最短引用链路,生成内存泄露的分析结果。可以看出,通过本公开实施例提供的内存泄露的分析方法,由于无需人工手动去检测app的程序代码,找出内存泄露的位置,并进行修复。而是自动地对应用程序进行压测,从而可以自动地输出内存泄露的分析结果。这样,开发人员就可以根据输出的内存泄露的分析结果,找出内存泄露的位置,并进行修复,提高了内存泄露的分析效率,解决了如何提高内存泄露的分析效率的问题。

本文档来自技高网...

【技术保护点】

1.一种内存泄露的分析方法,其特征在于,包括:

2.根据权利要求1所述的内存泄露的分析方法,其特征在于,所述获取所述内存压测程序在内存压测过程中的至少一个弱引用对象,包括:

3.根据权利要求1所述的内存泄露的分析方法,其特征在于,一个弱引用对象对应一个目标标识;

4.根据权利要求1所述的内存泄露的分析方法,其特征在于,所述预设条件包括:

5.根据权利要求1所述的内存泄露的分析方法,其特征在于,所述获取当前抓取的内存快照中指向所述未被清理的弱引用对象包括的目标对象的至少一条实际引用链路,包括:

6.根据权利要求5所述的内存泄露的分析方法,其特征在于,所述在满足目标条件的情况下,抓取当前的内存快照,包括:

7.根据权利要求1所述的内存泄露的分析方法,其特征在于,所述根据所述实际引用链路,确定所述未被清理的弱引用对象包括的目标对象中每个所述目标对象的最短引用链路,包括:

8.一种内存泄露的分析装置,其特征在于,包括:

9.一种电子设备,其特征在于,包括:存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于在执行计算机程序时,使得所述电子设备实现权利要求1-7任一项所述的内存泄露的分析方法。

10.一种计算机可读存储介质,其特征在于,包括:所述计算机可读存储介质上存储有计算机程序,当所述计算机程序被计算设备执行时,使得所述计算设备实现权利要求1-7任一项所述的内存泄露的分析方法。

...

【技术特征摘要】

1.一种内存泄露的分析方法,其特征在于,包括:

2.根据权利要求1所述的内存泄露的分析方法,其特征在于,所述获取所述内存压测程序在内存压测过程中的至少一个弱引用对象,包括:

3.根据权利要求1所述的内存泄露的分析方法,其特征在于,一个弱引用对象对应一个目标标识;

4.根据权利要求1所述的内存泄露的分析方法,其特征在于,所述预设条件包括:

5.根据权利要求1所述的内存泄露的分析方法,其特征在于,所述获取当前抓取的内存快照中指向所述未被清理的弱引用对象包括的目标对象的至少一条实际引用链路,包括:

6.根据权利要求5所述的内存泄露的分析方法,其特征在于,所述在满足目标条件的情况下,抓取当前的内...

【专利技术属性】
技术研发人员:王书银
申请(专利权)人:聚好看科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1