一种内存泄露定位方法及电子设备

阅读: 评论:0

著录项
  • CN201610825597.2
  • 20160914
  • CN106407031A
  • 20170215
  • 华为数字技术(成都)有限公司
  • 严小林
  • G06F11/07
  • G06F11/07 G06F11/30

  • 四川省成都市高新区西部园区清水河片区
  • 四川(51)
  • 北京中博世达专利商标代理有限公司
  • 申健
摘要
本发明实施例提供一种内存泄露定位方法及电子设备,涉及内存管理技术领域,能够在不修改系统内存管理模块的基础上,利用Hook技术监控内存单元的统一申请、释放接口函数,准确定位存在内存泄露的块内存和页面内存。方案为:当内存单元通过申请接口函数被申请时,保存内存单元与函数调用栈的标识的映射关系,函数调用栈保存有通过申请接口函数申请内存单元的函数调用关系,内存单元包括块内存或页面内存;当内存单元通过释放接口函数被释放时,清除内存单元与内存单元对应的函数调用栈的标识的映射关系;根据多次统计的与每个函数调用栈的标识存在映射关系的内存单元的内存大小,确定存在内存泄露的函数调用栈和函数。本发明实施例用于内存泄露定位。
权利要求

1.一种内存泄露定位方法,其特征在于,包括:

当内存单元通过申请接口函数被申请时,保存所述内存单元与函数调用栈的标识的映 射关系,所述函数调用栈保存有通过所述申请接口函数申请所述内存单元的函数调用关 系;其中,所述内存单元包括块内存或页面内存;

当所述内存单元通过释放接口函数被释放时,清除所述内存单元与所述函数调用栈的 标识的映射关系;

多次统计与每个函数调用栈的标识存在映射关系的内存单元的内存大小;

根据与每个函数调用栈的标识存在映射关系的内存单元的内存大小,确定存在内存泄 露的函数调用栈和函数。

2.根据权利要求1所述的方法,其特征在于,所述内存单元为块内存,所述保存所述内 存单元与函数调用栈的标识的映射关系包括:

保存所述块内存的起始地址与所述函数调用栈的标识的映射关系。

3.根据权利要求2所述的方法,其特征在于,所述清除所述内存单元与所述函数调用栈 的标识的映射关系包括:

删除所述块内存的起始地址与所述函数调用栈的标识的映射关系中,所述块内存的起 始地址。

4.根据权利要求1所述的方法,其特征在于,所述内存单元为页面内存,所述保存所述 内存单元与所述函数调用栈的标识的映射关系包括:

保存所述页面内存的页号与所述函数调用栈的标识的映射关系。

5.根据权利要求4所述的方法,其特征在于,所述清除所述内存单元与所述函数调用栈 的标识的映射关系包括:

将保存的所述页面内存的页号与所述函数调用栈的标识的映射关系中,所述页面内存 对应的函数调用栈的标识设置为释放标识。

6.一种电子设备,其特征在于,包括:

保存单元,用于当内存单元通过申请接口函数被申请时,保存所述内存单元与函数调 用栈的标识的映射关系,所述函数调用栈保存有通过所述申请接口函数申请所述内存单元 的函数调用关系;其中,所述内存单元包括块内存或页面内存;

清除单元,用于当所述内存单元通过释放接口函数被释放时,清除所述内存单元与所 述函数调用栈的标识的映射关系;

统计单元,用于多次统计与每个函数调用栈的标识存在映射关系的内存单元的内存大 小;

确定单元,用于根据与每个函数调用栈的标识存在映射关系的内存单元的内存大小, 确定存在内存泄露的函数调用栈和函数。

7.根据权利要求6所述的电子设备,其特征在于,所述内存单元为块内存,所述保存单 元具体用于:

保存所述块内存的起始地址与所述函数调用栈的标识的映射关系。

8.根据权利要求7所述的电子设备,其特征在于,所述清除单元具体用于:

删除所述块内存的起始地址与所述函数调用栈的标识的映射关系中,所述块内存的起 始地址。

9.根据权利要求6所述的电子设备,其特征在于,所述内存单元为页面内存,所述保存 单元具体用于:

保存所述页面内存的页号与所述函数调用栈的标识的映射关系。

10.根据权利要求9所述的电子设备,其特征在于,所述清除单元具体用于:

将保存的所述页面内存的页号与所述函数调用栈的标识的映射关系中,所述页面内存 对应的函数调用栈的标识设置为释放标识。

11.一种电子设备,其特征在于,包括处理器、存储器和收发器,所述处理器与所述存储 器和所述收发器耦合,所述存储器用于存储程序和指令,所述指令使得所述电子设备执行 以下操作:

当内存单元通过申请接口函数被申请时,保存所述内存单元与函数调用栈的标识的映 射关系,所述函数调用栈保存有通过所述申请接口函数申请所述内存单元的函数调用关 系;其中,所述内存单元包括块内存或页面内存;

当所述内存单元通过释放接口函数被释放时,清除所述内存单元与所述函数调用栈的 标识的映射关系;

多次统计与每个函数调用栈的标识存在映射关系的内存单元的内存大小;

根据与每个函数调用栈的标识存在映射关系的内存单元的内存大小,确定存在内存泄 露的函数调用栈和函数。

说明书
技术领域

本发明实施例涉及内存管理技术领域,尤其涉及一种内存泄露定位方法及电子设 备。

在具有Linux、Unix等操作系统的电子设备中,内核对内存的管理分为页面内存管 理和块内存管理。内核态程序可以申请页面内存使用,也可以申请块内存使用。如果内核态 程序运行时有内存泄露,将会导致系统内存不足,严重时还将导致系统崩溃。

现有技术通过修改操作系统中的内存管理模块,从而在每一块内存后附加一小块 内存诊断区域,用于保存内存的使用状态(例如,已申请占用状态或空闲状态),及内存申请 和释放的函数信息,从而根据内存诊断区域中的信息来定位存在内存泄露的块内存。

现有技术中的该种定位方法仅能定位存在内存泄露的块内存,无法定位存在内存 泄露的页面内存,而且需要通过修改系统内核和集成组件来实现内存管理模块的修改,而 修改系统内核和集成组件的实现难度和复杂度极大。

本发明实施例提供一种内存泄露定位方法及电子设备,能够在不修改系统内存管 理模块的基础上,利用Hook技术监控内存单元的统一申请、释放接口函数,从而准确定位存 在内存泄露的块内存和页面内存。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,本发明实施例提供了一种内存泄露定位方法,包括:当内存单元通过申 请接口函数被申请时,电子设备保存内存单元与函数调用栈的标识的映射关系。其中,函数 调用栈保存有通过申请接口函数申请内存单元的函数调用关系;其中,内存单元包括块内 存或页面内存。当内存单元通过释放接口函数被释放时,电子设备清除内存单元与内存单 元对应的函数调用栈的标识的映射关系。并且,电子设备多次统计与每个函数调用栈的标 识存在映射关系的内存单元的内存大小。最后,电子设备根据与每个函数调用栈的标识存 在映射关系的内存单元的内存大小,确定存在内存泄露的函数调用栈和函数。

从而,电子设备通过保存被申请的内存单元与函数调用栈的标识的映射关系,清 除被释放的内存单元与函数调用栈的标识的映射关系,并多次统计与每个函数调用栈的标 识存在映射关系的内存单元的内存大小,从而根据统计结果确定存在内存泄露的函数调用 栈和函数,可以准确定位存在内存泄露的块内存和页面内存,而不需要通过修改系统内核 和集成组件来修改系统内存管理模块,可以降低实现难度和复杂度,提高系统性能。

在一种可能的实现方式中,内存单元为块内存,电子设备保存内存单元与内存单 元对应的函数调用栈的标识的映射关系包括:电子设备保存块内存的起始地址与块内存对 应的函数调用栈的标识的映射关系。

在一种可能的实现方式中,电子设备清除内存单元与函数调用栈的标识的映射关 系包括:电子设备删除块内存的起始地址与函数调用栈的标识的映射关系中,块内存的起 始地址。

这样,电子设备可以准确定位存在内存泄露的块内存。

在一种可能的实现方式中,内存单元为页面内存,电子设备保存内存单元与函数 调用栈的标识的映射关系包括:电子设备保存页面内存的页号与函数调用栈的标识的映射 关系。

在一种可能的实现方式中,电子设备清除内存单元与函数调用栈的标识的映射关 系包括:电子设备将保存的页面内存的页号与函数调用栈的标识的映射关系中,页面内存 对应的函数调用栈的标识设置为释放标识。

这样,电子设备可以准确定位存在内存泄露的页面内存。

第二方面,本发明实施例提供了一种电子设备,包括:保存单元,用于当内存单元 通过申请接口函数被申请时,保存内存单元与函数调用栈的标识的映射关系。其中,函数调 用栈保存有通过申请接口函数申请内存单元的函数调用关系;其中,内存单元包括块内存 或页面内存。清除单元,用于当内存单元通过释放接口函数被释放时,清除内存单元与内存 单元对应的函数调用栈的标识的映射关系。统计单元,用于多次统计与每个函数调用栈的 标识存在映射关系的内存单元的内存大小。确定单元,用于根据与每个函数调用栈的标识 存在映射关系的内存单元的内存大小,确定存在内存泄露的函数调用栈和函数。

在一种可能的实现方式中,内存单元为块内存,保存单元具体用于:保存块内存的 起始地址与块内存对应的函数调用栈的标识的映射关系。

在一种可能的实现方式中,清除单元具体用于:删除块内存的起始地址与函数调 用栈的标识的映射关系中,块内存的起始地址。

在一种可能的实现方式中,内存单元为页面内存,保存单元具体用于:保存页面内 存的页号与函数调用栈的标识的映射关系。

在一种可能的实现方式中,清除单元具体用于:将保存的页面内存的页号与函数 调用栈的标识的映射关系中,页面内存对应的函数调用栈的标识设置为释放标识。

又一方面,本发明实施例提供了一种电子设备,包括处理器和收发器,该处理器被 配置为支持该电子设备执行上述方法中相应的功能。该收发器用于支持该电子设备与其它 网元之间进行通信。该电子设备还可以包括存储器,该存储器用于与处理器耦合,保存该电 子设备必要的程序指令和数据。

再一方面,本发明实施例提供了一种计算机存储介质,用于储存为上述电子设备 所用的计算机软件指令,其包含用于执行上述方面所设计的程序。

为了便于理解,示例的给出了部分与本发明相关概念的说明以供参考。如下所示:

内存泄露:也称“存储渗漏”,用动态存储分配函数动态申请的内存单元,在使用完 毕后未释放,结果导致一直占据该内存单元。

页面内存:电子设备的内存管理模块将内存按预设的固定大小划分为页面,每个 页面即为一个页面内存。

块内存:电子设备的内存管理模块将内存划分为大小不断不等的“块”来进行管 理,每一“块”即可称为一个块内存。

内存单元:一个内存单元指一个块内存或一个页面内存。

Hook技术:即钩子技术,是消息处理机制的一个平台,应用程序可以在上面设置子 程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达 后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理消息或特定事件。钩 子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出, 在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子 函数可以处理该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中 所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实 施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图 获得其他的附图。

图1为本发明实施例提供的一种台式计算机的结构示意图;

图2为本发明实施例提供的一种内存泄露定位方法流程图;

图3为本发明实施例提供的一种内存单元与函数调用栈的映射关系示意图;

图4为本发明实施例提供的另一种内存泄露定位方法流程图;

图5为本发明实施例提供的另一种内存泄露定位方法流程图;

图6为本发明实施例提供的一种电子设备的结构示意图;

图7为本发明实施例提供的另一种电子设备的结构示意图。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。

本发明实施例涉及的电子设备是具有统一的块内存申请和释放接口,以及统一的 页面内存申请和释放接口的设备,例如可以是具有Linux、Unix等操作系统的电子设备。示 例性的,该电子设备具体可以是笔记本电脑、台式计算机、平板电脑、智能手机等。

以电子设备为具有Linux操作系统的台式计算机为例,其部分结构框图可以参见 图1。由图1可知,台式计算机可以包括硬件系统和软件系统两部分。其中,软件系统是指为 方便使用计算机和提高使用效率而组织的程序以及用于开发、使用和维护的有关文档。软 件系统可分为系统软件和应用软件两大类。系统软件由一组控制计算机系统并管理其资源 的程序组成,其主要功能包括:启动计算机,存储、加载和执行应用程序,对文件进行排序、 检索,将程序语言翻译成机器语言等。实际上,系统软件可以看作用户与计算机的接口,它 为应用软件和用户提供了控制、访问硬件的手段,这些功能主要由操作系统完成。操作系统 是管理、控制和监督计算机软、硬件资源协调运行的程序系统,由一系列具有不同控制和管 理功能的程序组成,它是直接运行在计算机硬件上的、最基本的系统软件,是系统软件的核 心。

硬件系统一般可以分为输入单元、输出单元、算术逻辑单元、控制单元及记忆单 元,其中算术逻辑单元和控制单元合称中央处理单元(Center Processing Unit,CPU)。具 体的,硬件系统可以包括:内存、CPU、主板、电源、硬盘、显示器、光驱、网卡、声卡、显卡等。其 中,内存又叫内部存储器或者是随机存储器,可以用于暂时存放CPU中的运算数据,以及与 硬盘等外部存储器交换的数据。

在内存管理过程中,对于内存泄露问题,现有技术通过修改系统内核和集成组件, 在每一块内存后附加一小块内存诊断区域,用于保存内存的使用状态及内存申请和释放的 函数信息,从而根据内存诊断区域中的信息来定位存在内存泄露的块内存,而修改系统内 核和集成组件的实现难度和复杂度极大。

本发明实施例提供的定位方法可以不修改系统内存管理模块的基础上,通过钩子 (Hook)技术(例如Linux中的Kprobe)监控内存单元的统一申请、释放接口函数,从而准确定 位存在内存泄露的块内存和页面内存。以下将通过具体实施例进行详细说明。

本发明实施例提供了一种内存泄露定位方法,参见图2,该方法可以包括:

101、当内存单元通过申请接口函数被申请时,电子设备保存内存单元与函数调用 栈的标识的映射关系,函数调用栈保存有通过申请接口函数申请内存单元的函数调用关 系。

其中,这里被申请的内存单元可以是一个块内存也可以是一个页面内存。电子设 备中的任意块内存可以通过统一的申请接口函数被申请,例如在具有Linux操作系统的电 子设备中,Linux内核可以采用slab机制将内存划分为大小不等的块内存来进行管理,并提 供了统一的块内存申请接口函数kmem_cache_alloc。同样,电子设备中的任意页面内存也 可以通过统一的申请接口函数被申请,例如在具有Linux操作系统的电子设备中,该统一的 申请接口函数可以是alloc_pages。

电子设备可以利用Hook技术监控内存单元的统一申请接口函数。当一个内存单元 (即一个块内存或一个页面内存)通过对应的申请接口函数被申请时,电子设备可以保存该 内存单元与函数调用栈的标识的映射关系。其中,函数调用栈可以用于保存通过申请接口 函数申请该内存单元的所有函数之间的函数调用关系,在本发明实施例中可以称为“函数 调用链”。举例来说,函数1调用函数2,函数2调用申请接口函数以申请该内存单元,则该内 存单元对应的函数调用栈中保存有“函数1调用函数2,函数2调用申请接口函数”这一函数 调用链。

102、当内存单元通过释放接口函数被释放时,电子设备清除内存单元与函数调用 栈的标识的映射关系。

与申请接口函数类似,电子设备中的已经被申请占用的任意块内存可以通过统一 的释放接口函数被释放,例如在具有Linux操作系统的电子设备中,该统一的释放接口函数 可以是kmem_cache_free接口函数。同样,电子设备中已经被申请占用的任意页面内存也可 以通过统一的释放接口函数被释放,例如在具有Linux操作系统的电子设备中,该统一的申 请接口函数可以是free_pages接口函数。

电子设备可以利用Hook技术监控内存单元的统一释放接口函数。当已经被申请占 用的一个内存单元(即一个块内存或一个页面内存)通过对应的释放接口函数被释放时,电 子设备可以清除该内存单元与函数调用栈的标识的映射关系。

103、电子设备多次统计与每个函数调用栈的标识存在映射关系的内存单元的内 存大小。

104、电子设备根据与每个函数调用栈的标识存在映射关系的内存单元的内存大 小,确定存在内存泄露的函数调用栈和函数。

在步骤103和步骤104中,电子设备可以多次统计与每个函数调用栈的标识存在映 射关系的所有内存单元的总的内存大小。其中,与某一函数调用栈的标识存在映射关系的 所有内存单元的总的内存大小,即为被该函数调用栈中的函数调用链申请占用的内存大 小。当与某一函数调用栈的标识存在映射关系的所有内存单元的总的内存持续、频繁地增 加,且达到预设内存阈值时,可以确定该函数调用栈保存的函数调用链中的函数存在内存 泄漏。当然,电子设备可以周期性地统计与每个函数调用栈的标识存在映射关系的所有内 存单元的总的内存大小,也可以非周期性地进行统计,这里不做具体限定。

示例性的,图3提供了电子设备某次统计的内存单元与函数调用栈的映射关系示 意图。由图3可知,与函数调用栈0存在映射关系的内存单元的数量较多,函数调用栈0申请 占用的内存较大。若多次统计发现函数调用栈0申请占用的内存持续、频繁地增加,且达到 预设内存阈值时,可以确定函数调用栈0保存的函数调用链中的函数存在内存泄漏。

需要说明的是,在现有技术中,通过修改系统内核和集成组件来修改系统内存管 理模块,从而在每个块内存后附加内存诊断区域的方式,由于是指系统内核和集成组件中 进行设置的,因而当电子设备启动时内存泄露定位程序即开始运行,并会随着电子设备的 运行持续运行下去,而不论是否存在内存泄露问题,是否需要进行内存泄露定位,从而影响 了系统性能。而本发明实施例中,并不需要通过修改系统内存管理模块来进行内存泄露定 位,内存泄露定位程序可以在存在内存泄露问题,需要进行内存定位泄露时随时启动,并在 定位完成后可以随时停止启动,从而可以提高系统性能,并且不会破坏问题现场。

而且,现有技术中在每个块内存后附加内存诊断区域较小,仅能保存少量的信息, 例如保存直接调用申请接口函数的函数信息。当多个函数通过同一个公共函数调用申请接 口函数时,电子设备将无法确定存在内存泄露的函数到底是哪个具体的函数。而在本发明 实施例中,电子设备可以分配特定的区域,以保存内存单元与调用栈的映射关系以及调用 栈中的函数调用链,存储区域的大小并不受限制,可以保存大量信息。当多个函数通过同一 个公共函数调用申请接口函数时,由于调用栈中并不是仅保存有直接调用申请接口函数的 函数信息,而是保存有通过申请接口函数申请内存单元的整个函数调用链,因而电子设备 可以根据调用栈中的函数信息,准确确定存在内存泄露的具体函数。

同时,现有技术中通过增加内存诊断区域的方法,仅适用于定位存在内存泄露的 块内存,却无法定位存在内存泄露的页面内存。而本发明实施例中的内存单元可以是块内 存或者页面内存,即本发明实施例提供的方法可以适用于定位存在内存泄露的块内存,也 可以适用于定位存在内存泄露的页面内存。

因此,在本发明实施例提供的内存泄露定位方法中,电子设备通过Hook技术监控 内存单元的统一申请、释放接口函数,保存被申请的内存单元与函数调用栈的标识的映射 关系,清除被释放的内存单元与函数调用栈的标识的映射关系,并多次统计与每个函数调 用栈的标识存在映射关系的内存单元的内存大小,从而根据统计结果确定存在内存泄露的 函数调用栈和函数,可以准确定位存在内存泄露的块内存和页面内存,而不需要通过修改 系统内核和集成组件来修改系统内存管理模块,可以降低实现难度和复杂度,提高系统性 能。

其中,当内存单元为块内存时,参见图4,在上述步骤101中,电子设备保存内存单 元与函数调用栈的标识的映射关系具体可以包括:

201、电子设备保存块内存的起始地址与函数调用栈的标识的映射关系。

当内存单元为块内存,且块内存通过申请接口函数被申请时,电子设备具体可以 通过保存块内存的起始地址与函数调用栈的标识的映射关系,来保存内存单元与函数调用 栈的标识的映射关系。

示例性的,当图3中的内存单元为块内存时,电子设备中保存的块内存的起始地址 与函数调用栈的标识的映射关系可以参见如下表1。其中,本次被申请的块内存可以为块内 存3。

表1

在上述步骤201的基础上,在上述步骤102中,电子设备清除内存单元与函数调用 栈的标识的映射关系具体可以包括:

202、电子设备删除块内存的起始地址与函数调用栈的标识的映射关系中,块内存 的起始地址。

示例性的,当本次通过释放接口函数被释放的块内存为表1中的块内存3时,电子 设备删除块内存3的起始地址后,电子设备中保存的块内存的起始地址与函数调用栈的标 识的映射关系可以参见如下表2。

表2

当内存单元为页面内存时,参见图5,在上述步骤101中,电子设备保存内存单元与 函数调用栈的标识的映射关系具体可以包括:

301、电子设备保存页面内存的页号与函数调用栈的标识的映射关系。

当内存单元为页面内存,且页面内存通过申请接口函数被申请时,电子设备具体 可以通过保存页面内存的页号与函数调用栈的标识的映射关系,来保存内存单元与函数调 用栈的标识的映射关系。

示例性的,当图3中的内存单元为页面内存时,电子设备中保存的页面内存的页号 与函数调用栈的标识的映射关系可以参见如下表3。其中,本次被申请的页面内存可以为页 号3对应的页面内存。

表3

页面内存页号 函数调用栈序号

页号3 0

页号4 0

页号5 0

页号6 0

页号7 3

页号8 M-1

在上述步骤301的基础上,在上述步骤102中,电子设备清除内存单元与函数调用 栈的标识的映射关系具体可以包括:

302、电子设备将保存的页面内存的页号与函数调用栈的标识的映射关系中,页面 内存对应的函数调用栈的标识设置为释放标识。

其中,释放标识可以根据实际需要进行设定,例如可以将释放标识设置为“-1”。示 例性的,当释放标识为“-1”,本次通过释放接口函数被释放的页面内存为表3中页号3对应 的页面内存时,电子设备将页号3对应的页面内存所对应的函数调用栈的标识设置为释放 标识后,电子设备中保存的页面内存的页号与函数调用栈的标识的映射关系可以参见如下 表4。

表4

页面内存页号 函数调用栈序号

页号3 -1

页号4 0

页号5 0

页号6 0

页号7 3

页号8 M-1

需要说明的是,本发明实施例是通过Hook技术监控系统函数中的内存单元统一申 请、释放接口函数,并统计内存单元与函数调用栈的对应关系来实现内存泄露定位的。通过 Hook技术监控、统计系统函数的方法还可以应用在其它方面,例如进行性能调优等,这里不 再赘述。

参见图6,本发明另一实施例还提供了一种电子设备600,可以包括:保存单元601、 清除单元602、统计单元603和确定单元604。其中,保存单元601,可以用于当内存单元通过 申请接口函数被申请时,保存内存单元与函数调用栈的标识的映射关系,函数调用栈保存 有通过申请接口函数申请内存单元的函数调用关系;其中,内存单元包括块内存或页面内 存;清除单元602,可以用于当内存单元通过释放接口函数被释放时,清除内存单元与函数 调用栈的标识的映射关系;统计单元603,可以用于多次统计与每个函数调用栈的标识存在 映射关系的内存单元的内存大小;确定单元604,可以用于根据与每个函数调用栈的标识存 在映射关系的内存单元的内存大小,确定存在内存泄露的函数调用栈和函数。

进一步的,保存单元601具体可以用于执行图4中的步骤201和图5中的步骤301,清 除单元602具体可以用于执行图4中的步骤202和图5中的步骤302。此外,图6中的电子设备 600可以用于执行上述方法流程中的任一流程,本发明实施例在此不再详述。

进一步的,图6中的电子设备是以功能单元的形式来呈现。这里的“单元”可以指特 定应用集成电路(Application Specific Integrated Circuit,ASIC),电路,执行一个或 多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器 件。在一个简单的实施例中,本领域的技术人员可以想到图6中的电子设备可以采用图7所 示的形式。各单元可以通过图7的处理器和存储器来实现。

如图7所示,电子设备700可以包括一个或多个端口704,与收发器703相耦合。收发 器703可以是发射器,接收器或其组合,从其它网络节点通过端口704发送或接收数据包。处 理器701耦合到收发器703,用于处理数据包。处理器701可包含一个或多个多核处理器和/ 或存储器702。处理器701可以是一个通用处理器,专用集成电路,或数字信号处理器 (Digital Signal Processing,DSP)。

存储器702可为非瞬时性的存储介质,与处理器701相耦合,用于保存不同类型的 数据。存储器702可包含只读存储器(Read Only Memory,ROM),随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是磁盘存 储器。存储器702可用于保存实现内存泄露定位相关方法的指令。当处理器执行指令时,该 指令使电子设备700执行图2、图4和图5中的相关步骤。可以理解,通过编程或装载可执行指 令到电子设备700的处理器701,缓存和长期存储中的至少一个。

电子设备700可实现根据本发明的实施例执行一个或多个指令以触发进行内存泄 露定位。这些指令可存储在存储器702中,也可集成在操作系统的内核或内核的插件中。

本发明实施例还提供了一种计算机存储介质,用于储存为上述图6所示的或图7所 示电子设备所用的计算机软件指令,其包含用于执行上述方法实施例所设计的程序。通过 执行存储的程序,可以实现内存泄露定位。

本领域普通技术人员应该了解本申请的所有或部分标的物可在结合硬件和/或固 件的软件中实施。例如,本文描述的标的物可在一个或多个处理器执行的软件中实施。在一 项示例性实施方式中,本文描述的标的物可使用存储有计算机可执行指令的非瞬时计算机 可读介质实施,当计算机处理器执行该计算机可执行指令时,该指令控制计算机执行步骤。 适于实施本文描述的标的物的示例计算机可读介质包括非瞬时计算机可读介质,例如磁盘 存储器设备、芯片存储器设备、可编程逻辑设备和专用集成电路。另外,实施本文描述的标 的物的计算机可读介质可位于单个设备或计算平台上,或可在多个设备或计算平台上分 发。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管 参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可 以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换; 而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

本文发布于:2023-04-13 18:14:46,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/86146.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图