确定内存泄露的方法、装置、存储介质及终端制造方法及图纸

技术编号:33784294 阅读:11 留言:0更新日期:2022-06-12 14:39
本公开涉及一种确定内存泄露的方法、装置、存储介质及终端,所述方法应用于终端,包括:在确定所述终端的内存占用量大于或等于预设内存占用阈值的情况下,获取处于使用状态的每个目标内存块的内存分配信息;根据多个所述内存分配信息,生成内存信息文件,以便用户通过所述内存信息文件确定存在内存泄露的对象。也就是说,本公开无需捕获内存分配函数和内存释放函数,根据目标内存块的内存分配信息,即可确定存在内存泄露的对象,实现对物理内存的内存泄露的检测,这样,可以提高物理内存的内存泄露的检测效率。存泄露的检测效率。存泄露的检测效率。

【技术实现步骤摘要】
确定内存泄露的方法、装置、存储介质及终端


[0001]本公开涉及终端
,尤其涉及一种确定内存泄露的方法、装置、存储介质及终端。

技术介绍

[0002]随着计算机应用需求的日益增加,应用程序的设计与开发也相应的日趋复杂,如何有效进行内存分配和释放,防止内存泄露的问题变得越来越突出。
[0003]相关技术中,通过捕获所有的内存分配函数和内存释放函数,对内存泄露情况进行检测,但是,这种方式只适用于堆内存,针对多媒体场景的物理内存(ion内存和gpu内存)的内存泄露,无法通过这种方式进行检测,只能对相关代码进行测试确定,导致内存泄露的检测效率比较低,因此,如何提高对物理内存的内存泄露检测效率成为亟待解决的问题。

技术实现思路

[0004]为克服相关技术中存在的问题,本公开提供一种确定内存泄露的方法、装置、存储介质及终端。
[0005]根据本公开实施例的第一方面,提供一种确定内存泄露的方法,应用于终端,所述方法包括:
[0006]在确定所述终端的内存占用量大于或等于预设内存占用阈值的情况下,获取处于使用状态的每个目标内存块的内存分配信息;
[0007]根据多个所述内存分配信息,生成内存信息文件,以便用户通过所述内存信息文件确定存在内存泄露的对象。
[0008]可选地,所述内存占用量包括所述终端的物理内存的占用量。
[0009]可选地,所述内存分配信息通过以下方式预先存储:
[0010]在所述终端分配所述目标内存块后,分配预设大小的内存信息空间;/>[0011]获取所述目标内存块对应的内存分配信息,并将所述内存分配信息存储在所述内存信息空间中。
[0012]可选地,所述方法还包括:
[0013]在所述目标内存块被释放后,释放所述目标内存块对应的内存信息空间。
[0014]可选地,所述获取处于使用状态的每个目标内存块的内存分配信息包括:
[0015]针对每个所述目标内存块,确定所述目标内存块对应的目标内存信息空间,并从所述目标内存信息空间中获取所述目标内存块对应的内存分配信息。
[0016]可选地,所述内存分配信息包括:线程回溯信息和线程属性信息,所述线程回溯信息包括每级函数调用栈中保存的连接寄存器的值。
[0017]根据本公开实施例的第二方面,提供一种确定内存泄露的装置,应用于终端,所述装置包括:
[0018]内存分配信息获取模块,被配置为在确定所述终端的内存占用量大于或等于预设
内存占用阈值的情况下,获取处于使用状态的每个目标内存块的内存分配信息;
[0019]内存信息文件生成模块,被配置为根据多个所述内存分配信息,生成内存信息文件,以便用户通过所述内存信息文件确定存在内存泄露的对象。
[0020]可选地,所述内存占用量包括所述终端的物理内存的占用量。
[0021]可选地,所述装置还包括:
[0022]空间分配模块,被配置为在所述终端分配所述目标内存块后,分配预设大小的内存信息空间;
[0023]信息存储模块,被被配置为获取所述目标内存块对应的内存分配信息,并将所述内存分配信息存储在所述内存信息空间中。
[0024]可选地,所述装置还包括:
[0025]空间释放模块,被配置为在所述目标内存块被释放后,释放所述目标内存块对应的内存信息空间。
[0026]可选地,所述信息存储模块,还被配置为:
[0027]针对每个所述目标内存块,确定所述目标内存块对应的目标内存信息空间,并从所述目标内存信息空间中获取所述目标内存块对应的内存分配信息。
[0028]可选地,所述内存分配信息包括:线程回溯信息和线程属性信息,所述线程回溯信息包括每级函数调用栈中保存的连接寄存器的值。
[0029]根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面所提供的确定内存泄露的方法的步骤。
[0030]根据本公开实施例的第四方面,提供一种终端备,包括:
[0031]存储器,其上存储有计算机程序;
[0032]处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面所提供的确定内存泄露的方法的步骤。
[0033]本公开的实施例提供的技术方案可以包括以下有益效果:在确定所述终端的内存占用量大于或等于预设内存占用阈值的情况下,获取处于使用状态的每个目标内存块的内存分配信息;根据多个所述内存分配信息,生成内存信息文件,以便用户通过所述内存信息文件确定存在内存泄露的对象。也就是说,本公开无需捕获内存分配函数和内存释放函数,根据目标内存块的内存分配信息,即可确定存在内存泄露的对象,实现对物理内存的内存泄露的检测,这样,可以提高物理内存的内存泄露的检测效率。
[0034]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0035]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0036]图1是根据本公开一示例性实施例示出的一种确定内存泄露的方法的流程图;
[0037]图2是根据本公开一示例性实施例示出的一种确定内存泄露的方法的框图;
[0038]图3是根据本公开一示例性实施例示出的一种确定内存泄露的装置的框图;
[0039]图4是根据本公开一示例性实施例示出的第二种确定内存泄露的装置的框图;
[0040]图5是根据本公开一示例性实施例示出的第三种确定内存泄露的装置的框图;
[0041]图6是根据本公开一示例性实施例示出的一种终端的框图。
具体实施方式
[0042]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0043]需要说明的是,本申请中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
[0044]在详细介绍本公开的具体实施方式之前,首先对本公开的应用场景进行说明。在终端中一些频繁分配释放内存的多媒体场景下,以照相机为例,在照相机出现ion或者gpu内存泄露的情况下,会导致照相机占用了大量内存,若不及时释放这些内存,可能会因为系统可用内存不足导致照相机异常退出或者照相机性能变差。目前,常用的内存泄露分析工具有Valgrind和TCMalloc,其工作原理都是在分配堆内存和释放堆内存的地方添加钩子,以捕获所有的内存分配函数malloc()/new和内存释放函数free()/delete,进而实现内存泄露检测。但是,在终端的多本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种确定内存泄露的方法,其特征在于,应用于终端,所述方法包括:在确定所述终端的内存占用量大于或等于预设内存占用阈值的情况下,获取处于使用状态的每个目标内存块的内存分配信息;根据多个所述内存分配信息,生成内存信息文件,以便用户通过所述内存信息文件确定存在内存泄露的对象。2.根据权利要求1所述的方法,其特征在于,所述内存占用量包括所述终端的物理内存的占用量。3.根据权利要求1所述的方法,其特征在于,所述内存分配信息通过以下方式预先存储:在所述终端分配所述目标内存块后,分配预设大小的内存信息空间;获取所述目标内存块对应的内存分配信息,并将所述内存分配信息存储在所述内存信息空间中。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:在所述目标内存块被释放后,释放所述目标内存块对应的内存信息空间。5.根据权利要求3所述的方法,其特征在于,所述获取处于使用状态的每个目标内存块的内存分配信息包括:针对每个所述目标内存块,确定所述目标内存块对应的目标内存信息空间,并从所述目标内存信息空间中获取所述目标内存块对应的内存分配信息。6.根据权利要求1

5任一项所述的方法,其特征在于,所...

【专利技术属性】
技术研发人员:李晓辉
申请(专利权)人:北京小米移动软件有限公司
类型:发明
国别省市:

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

1