[发明专利]一种获取内存泄露信息的方法、装置、介质和电子设备有效
申请号: | 201911133763.2 | 申请日: | 2019-11-19 |
公开(公告)号: | CN111090536B | 公开(公告)日: | 2021-11-16 |
发明(设计)人: | 朴英敏 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F9/50 |
代理公司: | 北京开阳星知识产权代理有限公司 11710 | 代理人: | 安伟 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 获取 内存 泄露 信息 方法 装置 介质 电子设备 | ||
本公开提供了一种获取内存泄露信息的方法、装置、介质和电子设备。所述方法包括:主进程获取其异常崩溃信息;基于所述异常崩溃信息的触发,主进程创建并运行应急子进程;所述应急子进程获取主进程共享的内存状态信息,并保存到内存状态数据集中;待主进程再次运行时,从所述内存状态数据集中获取内存状态信息;当所述内存状态信息满足内存异常条件时,则主进程生成内存泄露信息。本公开通过直接获取虚拟内存大小信息,从而快速定位内存泄露信息,并准确聚合内存泄露信息,提高了定位程序故障的效率。创建写时拷贝子进程,减少了其他线程和/或进程的干扰,既避免打断异常处理流程,也提高了获取异常信息的成功率和稳定性。
技术领域
本公开涉及定位进程异常领域,具体而言,涉及一种获取内存泄露信息的方法、装置、介质和电子设备。
背景技术
C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐。C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows、macOS、Linux、Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
C++最初被称作包含类的C语言。它是一种面向对象的计算机程序设计语言,是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言,支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。
C++是C语言的继承,进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。
C/C++语言因其高效的特性,广泛应用于计算机系统的软件开发中。不过它也存在明显的缺陷,比如,野指针、内存泄漏等问题一直困扰着研发人员。
野指针是指向一个已删除的对象或未申请访问受限内存区域的指针。与空指针不同,野指针无法通过简单地判断是否为NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野指针进行操作很容易造成程序错误。
内存泄漏(存储渗漏)是用存储分配函数动态开辟的空间,在使用完毕后未释放,导致一直占据该内存单元,直到程序结束。内存泄漏是一种很难定位和跟踪的错误。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。
内存泄漏问题,往往会引发各类异常。传统的内存泄漏监控方案是通过异常调用栈聚合获取内存泄露信息情况,由于内存泄漏原因和调用栈并不直接关联,从而导致通过调用栈监控内存泄漏的效率低下。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
本公开的目的在于提供一种获取内存泄露信息的方法、装置、介质和电子设备,能够解决上述提到的至少一个技术问题。具体方案如下:
根据本公开的具体实施方式,第一方面,本公开提供一种获取内存泄露信息的方法,包括:
主进程获取其异常崩溃信息;
基于所述异常崩溃信息的触发,主进程创建并运行应急子进程;
所述应急子进程获取主进程共享的内存状态信息,并保存到内存状态数据集中;
待主进程再次运行时,从所述内存状态数据集中获取内存状态信息;
当所述内存状态信息满足内存异常条件时,则主进程生成内存泄露信息。
根据本公开的具体实施方式,第二方面,本公开提供一种获取内存泄露信息的装置,包括:
获取异常崩溃信息单元,用于主进程获取其异常崩溃信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911133763.2/2.html,转载请声明来源钻瓜专利网。
- 信息记录介质、信息记录方法、信息记录设备、信息再现方法和信息再现设备
- 信息记录装置、信息记录方法、信息记录介质、信息复制装置和信息复制方法
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录设备、信息重放设备、信息记录方法、信息重放方法、以及信息记录介质
- 信息存储介质、信息记录方法、信息重放方法、信息记录设备、以及信息重放设备
- 信息存储介质、信息记录方法、信息回放方法、信息记录设备和信息回放设备
- 信息记录介质、信息记录方法、信息记录装置、信息再现方法和信息再现装置
- 信息终端,信息终端的信息呈现方法和信息呈现程序
- 信息创建、信息发送方法及信息创建、信息发送装置