[发明专利]一种内存跟踪方法及装置在审
申请号: | 202110558235.2 | 申请日: | 2021-05-21 |
公开(公告)号: | CN113297074A | 公开(公告)日: | 2021-08-24 |
发明(设计)人: | 黄金强 | 申请(专利权)人: | 百果园技术(新加坡)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 新加坡巴西班让路*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 跟踪 方法 装置 | ||
本申请公开了一种内存跟踪方法及装置,应用于部署有被测进程的实例的主机上,主机与外部设备连接,主机包括监控进程以及内存跟踪进程;该方法包括:通过监控进程接收外部设备下发的被测进程的名称,被测进程为疑似发生内存泄露的、需要进行内存跟踪的进程;监控进程根据被测进程的名称,获取被测进程在本机的内存资源数据;当监控进程根据内存资源数据确定被测进程在本机疑似存在内存泄露时,则启动内存跟踪进程;由内存跟踪进程调用进程跟踪ptrace函数对被测进程进行内存跟踪,该内存跟踪无需修改被测进程的现有代码逻辑,从而实现对被测进行的非侵入式的、实时的内存跟踪和内存泄露检测,提高内存泄漏排查的效率。
技术领域
本申请实施例涉及内存检测技术领域,尤其涉及一种内存跟踪方法及装置。
背景技术
随着计算机应用需求的日益增加,应用程序的设计与开发也相应的日趋复杂,开发人员在程序实现的过程中处理的变量也大量增加,如何有效进行内存分配和释放,防止内存泄漏(Memory Leak)的问题变得越来越突出。其中,内存泄漏是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏缺陷具有隐蔽性、积累性的特征,比其他内存非法访问错误更难检测。因为内存泄漏的产生原因是内存块未被释放,属于遗漏型缺陷而不是过错型缺陷。此外,内存泄漏通常不会直接产生可观察的错误症状,而是逐渐积累,降低系统整体性能,极端的情况下可能使系统崩溃。
在相关技术中,有如下几种内存泄露检测工具:
一种是Valgrind,Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind中包含的最常用的工具是Memcheck,Memcheck用来检测程序中出现的内存问题,所有对内存的读写都会被检测到,一切对malloc()/free()/new/delete的调用都会被捕获。但是,在日常线上系统里面,由于某些内存泄漏不是必现行为,假定发生的概率只有1%,那么部署有1000个实例,可能只有10个实例会发生泄漏。而发生泄漏的时机也不确定,可能受到业务场景以及相应的触发条件才能触发。此时如果大范围使用Valgrind去启动线上进程来进行内存泄露追踪,例如如果1000个实例都进行实时监控,则会导致整个系统耗费比较大,并对业务运行产生严重的影响。而如果不实时进行监控,则不能判断具体哪些实例会产生内存泄漏。并且Valgrind的采样次数有限(上限是一千万次),如果超过采样次数后Valgrind便不再收集数据。
另一种是堆分配工具massif,massif通过监测进程在堆上分配的内存数量来判断是否存在内存泄漏的可能。然而massif有个比较大的缺陷是其需要通过valgrind启动并监控内存分配与释放,导致性能受损。
还有一种方式是对malloc()/free()/new/delete进行接管,在运行过程中通过记录内存分配与释放的数量并进行对比,来判断是否存在泄漏的可能,但是这种方式对于现有代码的侵入比较大,且影响运行效率。
发明内容
本申请提供一种内存跟踪方法及装置,以解决现有的内存泄露检测存在的对于被测进程的现有代码的侵入大、检测效率低、大规模内存泄露检测导致的系统耗费大等问题。
第一方面,本申请实施例提供了一种内存跟踪方法,所述方法应用于部署有被测进程的实例的主机上,所述主机与外部设备连接,所述主机包括监控进程以及内存跟踪进程;所述方法包括:
通过所述监控进程接收所述外部设备下发的被测进程的名称,所述被测进程为疑似发生内存泄露的、需要进行内存跟踪的进程;
所述监控进程根据所述被测进程的名称,获取所述被测进程在本机的内存资源数据;
当所述监控进程根据所述内存资源数据确定所述被测进程在本机疑似存在内存泄露时,则启动所述内存跟踪进程;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百果园技术(新加坡)有限公司,未经百果园技术(新加坡)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110558235.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种可脱离的旋转装置
- 下一篇:显示面板和显示装置