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

检测内存泄漏的方法、装置、设备和存储介质制造方法及图纸

技术编号:44817418 阅读:1 留言:0更新日期:2025-03-28 20:05
本公开实施例提供了一种检测内存泄漏的方法、装置、设备和存储介质,属于内存管理技术领域。该方法中,基于目标进程发起的对目标内存的分配事件和释放事件,统计目标进程对目标内存的内存使用计数信息,通过判断内存使用计数信息是否满足内存泄漏条件,得到内存泄漏检测结果。采用该方法,通过简单的内存使用次数统计就可以判断目标进程是否导致目标内存发生内存泄漏,无需对内存申请总量和释放总量进行统计,用较为简单的统计计算替代了较为复杂的统计计算,节省大量的处理器资源。

【技术实现步骤摘要】

本公开涉及内存管理,特别涉及一种检测内存泄漏的方法、装置、设备和存储介质


技术介绍

1、随着计算机技术的发展,处理器种类越来越丰富,例如中央处理器(centralprocessing unit,cpu)、神经网络处理器(neural network processing unit,npu)、图形处理器(graphics processing unit,gpu)等,不同的处理器管理有各自的内存资源,例如,cpu管理系统内存,gpu管理显示内存,等等。有效进行内存分配、内存释放并防止内存泄漏变得更加重要。内存泄漏是指申请分配的内存未正常释放。例如,图像识别应用程序在申请内存进行图片识别后未释放内存。

2、相关技术中,可以统计内存的申请总量和释放总量,基于上述统计可以判断是否发生系统内存泄漏。

3、上述方式需要占用大量的处理器资源。


技术实现思路

1、本公开提供了一种检测内存泄漏的方法、装置、设备和存储介质,能够检测进程是否导致内存发生内存泄漏,技术方案如下:

2、第一方面,提供了一种检测内存泄漏的方法,该方法包括:基于目标进程发起的对目标内存的分配事件和释放事件,统计目标进程对目标内存的内存使用计数信息,其中,目标内存是目标处理器管理的内存;当发生目标触发事件时,如果内存使用计数信息满足内存泄漏条件,则输出目标进程导致目标内存发生内存泄漏。

3、检测应用程序的主界面中可以设置有内存选择栏、应用选择栏、开始检测控件和结束检测控件等,技术人员可以点击在内存选择栏选择目标内存,在应用选择栏选择目标应用程序,之后,可以点击开始检测控件,这时,检测应用程序则开始对目标应用程序向系统程序发送指令进行监测,统计目标进程对目标内存的内存使用计数信息,当检测到发生目标触发事件时,判断内存使用计数信息是否满足内存泄漏条件。

4、技术人员可以在目标应用程序中进行任意操作,或者,对目标应用程序的操作也可以通过某个预设的脚本自动控制,上述人工进行的操作或脚本自动进行的操作可以包括目标应用程序中所有函数所对应的操作,或者,也可以只包括目标应用程序中部分函数,此部分函数是有可能涉及内存分配和释放的函数,不涉及内存分配和释放的函数可以不进行测试。

5、这样,通过简单的内存使用次数统计就可以判断目标进程是否导致目标内存发生内存泄漏,无需对内存申请总量和释放总量进行统计,用较为简单的统计计算替代了较为复杂的统计计算,节省大量的处理器资源。

6、在一种可能的实现方式中,目标触发事件包括接收到内存泄漏检测指令。

7、另外,目标触发事件也可以是监测到目标进程处于空闲状态的时长超过时长阈值,如半小时、一小时等。目标触发事件还可以是达到指定时间点,该指定时间点可以由技术人员预先设置,可以设置为空闲时段中的任一时间点,如凌晨2点等。

8、这样,可以通过多种方式触发检测内存泄漏,能够及时的发现目标进程导致目标内存发生内存泄漏。

9、在一种可能的实现方式中,目标处理器为中央处理器、神经网络处理器或图形处理器。

10、这样,可以检测出应用程序导致的不同计算硬件管理的内存发生内存泄漏。

11、在一种可能的实现方式中,内存使用计数信息包括内存分配次数和内存释放次数。

12、这样,可以清楚的记录内存分配次数和内存释放次数,能够清楚的发现目标进程是否导致目标内存发生内存泄漏以及发生内存泄露的次数,便于技术人员对代码的修改。

13、在一种可能的实现方式中,内存泄漏条件包括内存分配次数大于内存释放次数。

14、这样,可以根据内存分配次数和内存释放次数判断目标进程是否导致目标内存发生内存泄漏以及发生内存泄露的次数,节省处理器资源。

15、在一种可能的实现方式中,内存使用计数信息包括内存分配次数与内存释放次数的差值。

16、这样,只通过一个数值便可以判断出目标进程是否导致目标内存发生内存泄漏以及发生内存泄露的次数,节省处理器资源。

17、在一种可能的实现方式中,内存泄漏条件包括差值大于0。

18、这样,可以根据内存分配次数和内存释放次数的差值判断目标进程是否导致目标内存发生内存泄漏以及发生内存泄露的次数,节省处理器资源。

19、在一种可能的实现方式中,基于目标进程发送的对目标内存的内存分配指令,更新内存使用计数信息,并基于目标进程发送的对目标内存的内存释放指令,更新内存使用计数信息。

20、这样,可以实时更新内存分配次数和内存释放次数,而且通过数值可以判断出目标进程是否导致目标内存发生内存泄漏以及发生内存泄露的次数。

21、在一种可能的实现方式中,检测到发生目标触发事件之后,可以输出在统计过程中目标进程中运行的函数的函数信息,函数信息至少包括函数名。

22、具体可以输出在统计过程中目标进程中发送内存分配指令的函数的函数信息以及发送内存释放指令的函数的函数信息,或者,可以输出在统计过程中目标进程中运行的所有函数的函数信息,并对发送内存分配指令和内存释放指令的函数进行标记。函数信息还可以包括调用该函数的上级函数的函数名,以及该函数所调用的下级函数的函数名等。

23、这样,技术人员可以基于输出的函数信息,进一步分析具体在运行哪个函数时发生的内存泄漏,准确定位内存泄漏原因。

24、第二方面,提供了一种检测内存泄漏的装置,用于实现上述第一方面及其可能的实现方式所提供的方法。

25、第三方面,提供了一种计算机设备,计算机设备包括存储器和处理器,存储器用于存储计算机指令。处理器执行存储器存储的计算机指令,以使计算机设备执行第一方面及其可能的实现方式所提供的方法。

26、第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序代码,当计算机程序代码被计算机设备执行时,计算机设备执行第一方面及其可能的实现方式所提供的方法。

27、第五方面,提供了一种计算机程序产品,计算机程序产品包括计算机程序代码,当计算机程序代码被计算机设备执行时,计算机设备执行第一方面及其可能的实现方式所提供的方法。

本文档来自技高网...

【技术保护点】

1.一种检测内存泄漏的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述目标触发事件包括接收到内存泄漏检测指令。

3.根据权利要求1或2所述的方法,其特征在于,所述目标处理器为中央处理器、神经网络处理器或图形处理器。

4.根据权利要求1-3任一项所述的方法,其特征在于,所述内存使用计数信息包括内存分配次数和内存释放次数。

5.根据权利要求4所述的方法,其特征在于,所述内存泄漏条件包括所述内存分配次数大于所述内存释放次数。

6.根据权利要求1-3任一项所述的方法,其特征在于,所述内存使用计数信息包括内存分配次数与内存释放次数的差值。

7.根据权利要求6所述的方法,其特征在于,所述内存泄漏条件包括所述差值大于0。

8.根据权利要求1-7任一项所述的方法,其特征在于,所述基于目标进程发起的对目标内存的分配事件和释放事件,统计所述目标进程对所述目标内存的内存使用计数信息,包括:

9.根据权利要求1-8任一项所述的方法,其特征在于,所述检测到发生目标触发事件之后,所述方法还包括:

10.一种检测内存泄漏的装置,其特征在于,所述装置包括:

11.根据权利要求10所述的装置,其特征在于,所述目标触发事件包括接收到内存泄漏检测指令。

12.根据权利要求10或11所述的装置,其特征在于,所述目标处理器为中央处理器、神经网络处理器或图形处理器。

13.根据权利要求10-12任一项所述的装置,其特征在于,所述内存使用计数信息包括内存分配次数和内存释放次数。

14.根据权利要求13所述的装置,其特征在于,所述内存泄漏条件包括所述内存分配次数大于所述内存释放次数。

15.根据权利要求10-12任一项所述的装置,其特征在于,所述内存使用计数信息包括内存分配次数与内存释放次数的差值。

16.根据权利要求15所述的装置,其特征在于,所述内存泄漏条件包括所述差值大于0。

17.根据权利要求10-16任一项所述的装置,其特征在于,所述统计模块,用于:

18.根据权利要求10-17任一项所述的装置,其特征在于,输出模块,还用于:

19.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器用于存储计算机指令;

20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被计算机设备执行时,所述计算机设备执行上述权利要求1-9中任一项所述的方法。

...

【技术特征摘要】

1.一种检测内存泄漏的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述目标触发事件包括接收到内存泄漏检测指令。

3.根据权利要求1或2所述的方法,其特征在于,所述目标处理器为中央处理器、神经网络处理器或图形处理器。

4.根据权利要求1-3任一项所述的方法,其特征在于,所述内存使用计数信息包括内存分配次数和内存释放次数。

5.根据权利要求4所述的方法,其特征在于,所述内存泄漏条件包括所述内存分配次数大于所述内存释放次数。

6.根据权利要求1-3任一项所述的方法,其特征在于,所述内存使用计数信息包括内存分配次数与内存释放次数的差值。

7.根据权利要求6所述的方法,其特征在于,所述内存泄漏条件包括所述差值大于0。

8.根据权利要求1-7任一项所述的方法,其特征在于,所述基于目标进程发起的对目标内存的分配事件和释放事件,统计所述目标进程对所述目标内存的内存使用计数信息,包括:

9.根据权利要求1-8任一项所述的方法,其特征在于,所述检测到发生目标触发事件之后,所述方法还包括:

10.一种检测内存泄漏的装置,其特征在于,所述装置包括:

11.根据权利要求10所述的装置,其特征...

【专利技术属性】
技术研发人员:刘云程
申请(专利权)人:成都华为技术有限公司
类型:发明
国别省市:

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

1