The present application provides a method and device for locating a memory leak. A positioning method of memory leaks, including the method used in network equipment: during startup, judging whether the memory usage reaches a first preset threshold value; if the memory usage reaches the first threshold, the query memory address allocated in the presence and start the program variable value memory the address does not match; if there are variables and the value of the memory address does not match, determine the memory address of the corresponding memory is not released; according to the memory function for the memory of the memory is not released to obtain information, and locate the position of the function in the program, to locate the memory leak location. Compared with the existing technology, this application can improve the location efficiency of the memory leakage.
【技术实现步骤摘要】
一种内存泄漏的定位方法及装置
本申请涉及通信
,尤其涉及一种内存泄漏的定位方法及装置。
技术介绍
内存泄漏是指程序中己动态分配的堆内存在使用后未释放或无法释放的现象,内存泄漏会造成系统内存的浪费,从而导致程序运行速度减慢,甚至可能导致系统崩溃等严重后果。在软件开发中,内存泄漏是常见的问题,但定位内存泄漏的位置却较难实现。现有技术中,定位内存泄露的位置的方法是,通过在程序中较易发生内存泄漏的位置增添格式输出函数,用以获取更多的相关日志信息。当内存泄漏时,开发人员可根据上述日志信息查找发生内存泄漏的可疑代码的位置,之后通过删除或注释掉程序中该可疑代码后重新运行该程序,以检测当前程序使用内存的情况。如果检测到此时的内存使用率不再显著增加,则可说明该代码位置发生内存泄漏的可能性较大。为进一步确认该代码位置是否发生内存泄漏,可将上述代码重新添加至程序后再次运行该程序,如果检测到此时的内存使用率又显著增加,则可确定该代码位置发生内存泄漏。但现有技术的不足在于:需要人为对大量日志信息进行分析,以查找发生内存泄漏的可疑代码的位置,并且需要人为不断地对可疑代码进行修改及调试,以定位内存泄漏的位置,从而导致内存泄漏的定位效率较低。
技术实现思路
有鉴于此,本申请提供一种内存泄漏的定位方法及装置,以提高内存泄漏的定位效率。具体地,本申请是通过如下技术方案实现的:一种内存泄漏的定位方法,所述方法应用于网络设备,包括:在系统启动的过程中,判断内存使用率是否达到第一预设阈值;若内存使用率达到所述第一预设阈值,则查询已分配的内存地址中是否存在与启动程序的变量值不匹配的内存地址;若存在 ...
【技术保护点】
一种内存泄漏的定位方法,其特征在于,所述方法应用于网络设备,包括:在系统启动的过程中,判断内存使用率是否达到第一预设阈值;若内存使用率达到所述第一预设阈值,则查询已分配的内存地址中是否存在与启动程序的变量值不匹配的内存地址;若存在与所述变量值不匹配的内存地址,则确定所述内存地址对应的内存未被释放;根据所述未被释放的内存的内存信息获取申请所述内存的函数,并定位所述函数在所述启动程序中的位置,以定位内存泄漏的位置。
【技术特征摘要】
1.一种内存泄漏的定位方法,其特征在于,所述方法应用于网络设备,包括:在系统启动的过程中,判断内存使用率是否达到第一预设阈值;若内存使用率达到所述第一预设阈值,则查询已分配的内存地址中是否存在与启动程序的变量值不匹配的内存地址;若存在与所述变量值不匹配的内存地址,则确定所述内存地址对应的内存未被释放;根据所述未被释放的内存的内存信息获取申请所述内存的函数,并定位所述函数在所述启动程序中的位置,以定位内存泄漏的位置。2.根据权利要求1所述的方法,其特征在于,还包括:在系统成功启动后,判断内存使用率是否达到第二预设阈值;在内存使用率达到所述第二预设阈值后,若再次进行内存分配,则保存被分配的内存的内存信息;若对已分配的内存进行释放,则判断是否已保存有被释放的内存对应的内存信息;若已保存有所述被释放的内存对应的内存信息,则标记所述内存信息;在接收到停止指令时,根据保存的所述内存信息,定位内存泄漏的位置。3.根据权利要求2所述的方法,其特征在于,所述根据保存的所述内存信息,定位内存泄漏的位置,包括:从保存的所述内存信息中获取未被标记的内存信息;根据所述未被标记的内存信息获取申请所述内存的函数,并定位所述函数在其所属程序中的位置,以定位内存泄漏的位置。4.根据权利要求1所述的方法,其特征在于,还包括:在系统成功启动后,判断内存使用率是否达到第三预设阈值;在内存使用率达到所述第三预设阈值后,若再次进行内存分配,则保存所分配的内存的内存信息;若对已分配的内存进行释放,则判断是否已保存有被释放的内存对应的内存信息;若已保存有所述被释放的内存对应的内存信息,则将保存的所述被释放的内存对应的内存信息删除;在接收到停止指令时,根据保存的所述内存信息获取申请所述内存的函数,并定位所述函数在其所属程序中的位置,以定位内存泄漏的位置。5.根据权利要求1所述的方法,其特征在于,所述内存信息包括内存起始地址、内存大小和函数调用栈信息。6.一种内存泄漏的定位装置,其特征在于,所述装置应用于网络设备,包括:判断模块,用于在系统启动...
【专利技术属性】
技术研发人员:赵丹,
申请(专利权)人:杭州迪普科技股份有限公司,
类型:发明
国别省市:浙江,33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。