内存泄漏定位方法、装置、电子设备及可读存储介质制造方法及图纸

技术编号:38844973 阅读:9 留言:0更新日期:2023-09-17 09:56
本申请提供一种内存泄漏定位方法、装置、电子设备及可读存储介质,该方法包括:接收嵌入式设备中运行的应用程序发送的内存申请或释放信息;将所述内存申请或释放信息保存为内存使用文件;所述内存使用文件保存在所述嵌入式设备的内存之外的存储设备中,所述存储设备与所述嵌入式设备通过通信或挂载方式连接;读取所述内存使用文件进行内存泄漏分析,得到可疑内存泄漏点。疑内存泄漏点。疑内存泄漏点。

【技术实现步骤摘要】
内存泄漏定位方法、装置、电子设备及可读存储介质


[0001]本申请涉及计算机
,尤其涉及一种内存泄漏定位方法、装置、电子设备及可读存储介质。

技术介绍

[0002]内存资源在设备中是非常宝贵的,对软件工程师来说,会花很多时间和精力在如何高效和重复使用内存上。在重复使用内存的过程中,伴随着大量的内存申请和内存释放,在此过程中有可能会因为申请后忘记释放或者错误释放导致内存泄漏。目前的内存泄漏定位方法,一般是在应用程序的内存申请和内存释放处保存内存申请或释放信息,然后通过匹配内存申请和内存释放信息,将无法匹配的内存申请信息作为内存泄漏点。
[0003]但是由于嵌入式设备的内存资源和处理能力都十分有限,如果在应用程序的运行过程中同时定位内存泄漏点,会占用大量内存资源,消耗CPU性能,严重影响应用程序的正常运行,甚至无法运行。

技术实现思路

[0004]为了不影响应用程序的正常运行,减少内存泄漏定位程序对内存资源的占用,本申请提供一种内存泄漏定位方法、装置、电子设备及可读存储介质。
[0005]第一方面,本申请提供一种内存泄漏定位方法,包括接收嵌入式设备中运行的应用程序发送的内存申请或释放信息;将所述内存申请或释放信息保存为内存使用文件;所述内存使用文件保存在所述嵌入式设备的内存之外的存储设备中,所述存储设备与所述嵌入式设备通过通信或挂载方式连接;读取所述内存使用文件进行内存泄漏分析,得到可疑内存泄漏点。
[0006]在上述实现过程中,通过接收嵌入式设备中应用程序发送的内存申请或释放信息,并将内存申请或释放信息保存在嵌入式设备的内存之外的存储设备的方式,一方面能够减少占用嵌入式设备的内存资源,另一方面,能够将内存泄漏定位方法与应用程序的运行相互剥离,避免影响应用程序的运行。
[0007]可选地,所述将所述内存申请或释放信息保存为内存使用文件,包括将所述内存申请或释放信息写入内存使用文件,每当所述内存使用文件大小超过预设大小时,关闭当前在写的内存使用文件,然后,重新创建一个新的内存使用文件,用于继续保存。所述预设大小不大于所述存储设备文件系统支持的最大文件大小。
[0008]在上述实现过程中,将内存使用文件保存为适度大小的文件形式,一方面可以提高内存泄漏定位程序查找单个内存使用文件的效率,另一方面,也有利于实现多线程并行分析。另一方面,存在内存泄漏的程序,在内存泄漏到一定程序时,容易发生异常,当设备异常退出时,最后一个内存使用文件来不及关闭,可能会无法读取,从而导致该文件数据丢失。但只要内存使用文件预设大小设置为合适范围,即使最后一个文件数据全丢失,也能通过前面所保存的内存使用文件得到可能的内存泄漏点。
[0009]可选地,在创建所述内存使用文件时,其文件名按照保存时间的先后顺序进行从小到大的顺序编号。
[0010]在上述实现过程中,通过对内存使用文件按照保存时间先后顺序对文件名进行从小到大的编号,从内存使用文件的编号即可反映出内存使用文件的时间属性,能够更加方便的对内存使用文件进行相关处理,例如根据文件名所包含的编号对文件按照编号顺序从小到大进行分组,然后,对各分组进行并行处理。
[0011]可选地,所述内存申请或释放信息包括内存申请或释放类型标识、内存地址及内存申请或释放位置,所述读取所述内存使用文件进行内存泄漏分析,得到可疑内存泄漏点,包括将所述内存使用文件分组,给每个分组分配一个组号,所述组号按分配的先后顺序进行编号;创建多个线程,并给每个线程按创建的前后顺序进行编号;所述线程的数量与所述内存使用文件分组的组数一致;所述线程编号和所述内存使用文件分组的组号对应;所述多个线程中的每个线程获取所述内存使用文件分组后的对应组号的一组内存使用文件,按文件名中所包含的编号从小到大顺序,针对每个内存使用文件,依次读取每条内存申请或释放信息;针对每条内存申请或释放信息,若所述内存申请或释放信息为内存释放信息,则保存该内存释放信息到缓存;若所述内存申请或释放信息为内存申请信息,依次读取后续内存释放信息,若所述后续内存释放信息的内存地址不能与所述内存申请信息的内存地址匹配,保存该内存申请信息到缓存;若能够匹配,从所述内存使用文件中删除与之匹配的内存释放信息。
[0012]当所有线程都处理完对应的一组内存使用文件后,主线程按线程编号从小到大顺序合并各所述线程中所述缓存中的内存申请信息与内存释放信息,对所述内存申请信息与内存释放信息按照内存地址进行匹配,删除匹配成功的内存申请信息及与之对应的内存释放信息;将缓存中的剩余的内存申请信息的内存申请位置确定为可疑内存泄漏点。
[0013]在上述实现过程中,通过使用多线程并行分析内存泄漏点的方式,能够极大提高内存泄漏定位程序的处理效率。并且通过按照内存使用文件的文件名的编号大小的方式进行内存申请信息和内存释放信息的处理和合并,由于内存使用文件是按照时间先后顺序生成的,其文件名也是根据文件生成时间先后顺序从小到大编号的,因此,根据编号从小到大的顺序合并内存申请信息和内存释放信息,能够更加方便的正确合并保存在缓存中的内存申请或释放信息。
[0014]可选地,所述内存申请信息与所述内存释放信息包括内存大小,当所述内存申请信息与所述内存释放信息匹配成功后,还包括校验所述内存申请信息与内存释放信息的内存大小是否一致,若不一致,进行报错。
[0015]在上述实现过程中,通过进一步校验内存申请信息与内存释放信息的内存大小是否一致,能够准确地判断保存内存资源申请和释放信息的程序本身是否存在错误。
[0016]第二方面,本申请提供一种内存泄漏定位装置,包括接收模块,用于接收嵌入式设备中运行的应用程序发送的内存申请或释放信息;存储模块,用于将所述内存申请或释放信息保存为内存使用文件;所述内存使用文件保存在所述嵌入式设备的内存之外的存储设备中,所述存储设备与所述嵌入式设备通过通信或挂载方式连接;分析模块,用于读取所述内存使用文件进行内存泄漏分析,得到可疑内存泄漏点。
[0017]可选地,所述存储模块,具体用于设置所述内存使用文件的容量为预设大小;所述
预设大小由考虑内存使用文件后续分析效率、设备异常退出导致最后一个文件来不及关闭,仍然可以根据以前保存的文件分析出可疑内存泄漏点、不大于所述存储设备文件系统支持的最大文件大小等因素而定;将所述内存申请或释放信息保存为所述内存使用文件,每当所述内存使用文件大小超过所述预设大小时,就关闭当前在写的内存使用文件,然后,重新创建一个新的内存使用文件,用于继续保存。
[0018]第三方面,本申请提供一种电子设备,包括处理器及存储器;所述处理器用于执行所述存储器中存储的程序,以实现如第一方面中任一项所述的内存泄漏定位方法。
[0019]第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如第一方面中任一项所述的内存泄漏定位方法。
附图说明
[0020]为了更清本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存泄漏定位方法,其特征在于,包括:接收嵌入式设备中运行的应用程序发送的内存申请或释放信息;将所述内存申请或释放信息保存为内存使用文件;所述内存使用文件保存在所述嵌入式设备的内存之外的存储设备中,所述存储设备与所述嵌入式设备通过通信或挂载方式连接;读取所述内存使用文件进行内存泄漏分析,得到可疑内存泄漏点。2.如权利要求1所述的内存泄漏定位方法,其特征在于,所述将所述内存申请或释放信息保存为内存使用文件,包括:将所述内存申请或释放信息写入内存使用文件,每当所述内存使用文件大小超过预设大小时,就关闭当前在写的内存使用文件,并重新创建一个新的内存使用文件,用于继续保存,所述预设大小不大于所述存储设备文件系统支持的最大文件大小。3.如权利要求2所述的内存泄漏定位方法,其特征在于,在创建所述内存使用文件时,其文件名按照保存时间的先后顺序进行从小到大编号。4.如权利要求3所述的内存泄漏定位方法,其特征在于,所述内存申请或释放信息包括内存申请或释放类型标识、内存地址及内存申请或释放位置,所述读取所述内存使用文件进行内存泄漏分析,得到可疑内存泄漏点,包括:将所述内存使用文件分组;给每个分组分配一个组号,所述组号按分配的先后顺序进行编号;创建多个线程,并给每个线程按创建的前后顺序进行编号;所述多个线程的数量与所述内存使用文件分组的组数一致;所述线程编号和所述内存使用文件分组的组号对应;所述多个线程中的每个线程获取所述内存使用文件分组后的对应组号的一组内存使用文件;按文件名中所包含的编号从小到大顺序,针对每个内存使用文件,依次读取每条内存申请或释放信息;针对每条内存申请或释放信息,若所述内存申请或释放信息为内存释放信息,则保存该内存释放信息到缓存;若所述内存申请或释放信息为内存申请信息,依次读取后续内存释放信息,若所述后续内存释放信息的内存地址不能与所述内存申请信息的内存地址匹配,保存该内存申请信...

【专利技术属性】
技术研发人员:陈文荣
申请(专利权)人:杭州杰峰科技有限公司
类型:发明
国别省市:

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

1