• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 16
    • 下载费用:30 金币  

    重庆时时彩五行的计划: 一种检测内存泄露的方法和装置.pdf

    关 键 词:
    一种 检测 内存 泄露 方法 装置
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201510845711.3

    申请日:

    2015.11.26

    公开号:

    CN106802861A

    公开日:

    2017.06.06

    当前法律状态:

    实审

    有效性:

    审中

    法律详情: 实质审查的生效IPC(主分类):G06F 11/36申请日:20151126|||公开
    IPC分类号: G06F11/36 主分类号: G06F11/36
    申请人: 大唐移动通信设备有限公司
    发明人: 王勃群; 张薇; 王欣
    地址: 100191 北京市海淀区学院路29号
    优先权:
    专利代理机构: 北京润泽恒知识产权代理有限公司 11319 代理人: 赵娟
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201510845711.3

    授权公告号:

    |||

    法律状态公告日:

    2017.06.30|||2017.06.06

    法律状态类型:

    实质审查的生效|||公开

    摘要

    本申请实施例提供了一种检测内存泄露的方法和装置,所述内存中设置有第一链表和第二链表,所述第一链表中具有多个存储节点,所述方法包括:确定执行内存申请操作的内存节点,所述内存节点具有对应的属性信息;将所述内存节点对应的属性信息,写入所述第一链表中的存储节点;将写入有属性信息的存储节点从所述第一链表移入第二链表;当所述内存节点执行内存释放操作时,将所述写入有属性信息的存储节点从所述第二链表移入所述第一链表;根据所述第一链表和所述第二链表确定内存泄露信息,使得软件开发人员能够实时地检测出内存泄露的问题,避免了人工操作,提高了内存泄露检测的准确性。

    权利要求书

    1.一种检测内存泄露的方法,其特征在于,所述内存中设置有第一链
    表和第二链表,所述第一链表中具有多个存储节点,所述方法包括:
    确定执行内存申请操作的内存节点,所述内存节点具有对应的属性信
    息;
    将所述内存节点对应的属性信息,写入所述第一链表中的存储节点;
    将写入有属性信息的存储节点从所述第一链表移入第二链表;
    当所述内存节点执行内存释放操作时,将所述写入有属性信息的存储节
    点从所述第二链表移入所述第一链表;
    根据所述第一链表和所述第二链表确定内存泄露信息。
    2.根据权利要求1所述的方法,其特征在于,在所述将写入有属性信
    息的存储节点从所述第一链表移入第二链表的步骤前,还包括:
    建立所述内存节点的属性信息与所述写入有属性信息的存储节点的索
    引关系。
    3.根据权利要求2所述的方法,其特征在于,所述当所述内存节点执
    行内存释放操作时,将所述写入有属性信息的存储节点从所述第二链表移入
    所述第一链表的步骤包括:
    当所述内存节点执行内存释放操作时,根据所述内存节点的属性信息与
    所述写入有属性信息的存储节点的索引关系,在所述第二链表中查找出所述
    内存节点对应的存储节点;
    删除所述存储节点中写入的属性信息;
    将已删除属性信息的存储节点从所述第二链表中移入第一链表。
    4.根据权利要求1或3所述的方法,其特征在于,所述根据所述第一
    链表和所述第二链表确定内存泄露信息的步骤包括:
    根据所述第一链表和所述第二链表,输出内存实际使用信息;
    根据所述内存实际使用信息,确定内存泄露信息。
    5.根据权利要求1所述的方法,其特征在于,所述属性信息包括内存
    操作编号、内存文件名编号、内存文件行号、内存首地址,和/或,内存大
    小。
    6.一种检测内存泄露的装置,其特征在于,所述内存中设置有第一链
    表和第二链表,所述第一链表中具有多个存储节点,所述装置包括:
    内存节点确定???,用于确定执行内存申请操作的内存节点,所述内存
    节点具有对应的属性信息;
    属性信息写入???,用于将所述内存节点对应的属性信息,写入所述第
    一链表中的存储节点;
    第一移入???,用于将写入有属性信息的存储节点从所述第一链表移入
    第二链表;
    第二移入???,用于当所述内存节点执行内存释放操作时,将所述写入
    有属性信息的存储节点从所述第二链表移入所述第一链表;
    内存泄露信息确定???,用于根据所述第一链表和所述第二链表确定内
    存泄露信息。
    7.根据权利要求6所述的装置,其特征在于,还包括:
    索引关系建立???,用于建立所述内存节点的属性信息与所述写入有属
    性信息的存储节点的索引关系。
    8.根据权利要求7所述的装置,其特征在于,所述第二移入??榘ǎ?br />存储节点查找子???,用于在所述内存节点执行内存释放操作时,根据
    所述内存节点的属性信息与所述写入有属性信息的存储节点的索引关系,在
    所述第二链表中查找出所述内存节点对应的存储节点;
    属性信息删除子???,用于删除所述存储节点中写入的属性信息;
    存储节点移入子???,用于将已删除属性信息的存储节点从所述第二链
    表中移入第一链表。
    9.根据权利要求6或8所述的装置,其特征在于,所述内存泄露信息
    确定??榘ǎ?br />
    内存信息输出子???,用于根据所述第一链表和所述第二链表,输出内
    存实际使用信息;
    内存泄露信息确定子???,用于根据所述内存实际使用信息,确定内存
    泄露信息。
    10.根据权利要求6所述的装置,其特征在于,所述属性信息包括内存
    操作编号、内存文件名编号、内存文件行号、内存首地址,和/或,内存大
    小。

    说明书

    一种检测内存泄露的方法和装置

    技术领域

    本申请涉及计算机技术领域,特别是涉及一种检测内存泄露的方法和一
    种检测内存泄露的装置。

    背景技术

    在计算机科学中,内存泄露并非指内存在物理上的消失,而是应用程序
    在分配某段内存后,由于设计的错误,使得程序未能释放已经不再使用的内
    存的情况,失去了对该段内存的控制,从而造成了内存的浪费。

    在LTE(Long Term Evolution,长期演进)技术中,PGW(PDN Gate Way,
    PDN网关)网元作为用户到PDN(Public DataNetwork,公用数据网)网络
    的锚点,需要支持大容量用户的反复接入、会话更新、会话删除等操作,对
    于PGW网元的信令处理子系统来说,就意味着需要为用户进行大量的内存
    申请和释放,很容易造成在一些异常分支的遗漏释放而出现内存泄露的情
    形,然而这种内存泄露的事件一般都是少量且隐蔽的,需要经过很长时间的
    积累甚至已经造成了严重后果才能被察觉。因此,软件开发人员难以检测和
    恢复泄露的内存。

    目前,软件开发人员一般通过如下几种方式来解决内存泄露的问题:

    第一种是根据编码规范及程序处理逻辑进行人工检查,通过在程序编写
    过程中采用良好一致的编程规范,在此基础上由熟悉程序处理逻辑的有经验
    的程序员进行代码走读,能够减小内存泄露问题出现的几率,但是,人工检
    查效率较低,而且问题检出率与检测人员的个人能力关系较大。

    第二种是使用静态内存检测工具,如PC-LINT、BEAM等,检查工具能
    够对程序代码进行静态检查,发现可能出现的内存泄露问题,在使用这类工
    具时,如果规则定义的合理有效,也能够发现一定数量的内存泄露问题。然
    而,检测工具的检测规则设置是否合理、有效,会严重影响到问题的检出。
    此外,静态内存检测工具只能够检测出常规错误,对于较复杂的错误则无能
    为力。

    以上两种方式都属于在软件开发过程中,通过对程序代码的检测,提前
    对可能出现的内存泄露问题进行预防的做法。第三种方式则是使用动态内存
    检测工具,如Valgrind、Rational Purify等,在系统运行过程中进行动态检测。
    但是,动态检测需要对程序代码使用特定的编译选项重新进行编译,增加了
    对系统资源的耗费,而且,第三方工具的引入同时还增加了系统运行的不确
    定性。

    因此,目前需要本领域技术人员迫切解决的一个技术问题就是:提供一
    种检测内存泄露的方法和装置,用以实时并直观地检测出内存泄露的问题,
    避免人工操作,提高内存泄露检测的准确性,以方便软件开发人员及时地恢
    复泄露的内存。

    发明内容

    鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至
    少部分地解决上述问题的一种检测内存泄露的方法和相应的一种检测内存
    泄露的装置。

    为了解决上述问题,本申请实施例公开了一种检测内存泄露的方法,所
    述内存中设置有第一链表和第二链表,所述第一链表中具有多个存储节点,
    所述方法包括:

    确定执行内存申请操作的内存节点,所述内存节点具有对应的属性信
    息;

    将所述内存节点对应的属性信息,写入所述第一链表中的存储节点;

    将写入有属性信息的存储节点从所述第一链表移入第二链表;

    当所述内存节点执行内存释放操作时,将所述写入有属性信息的存储节
    点从所述第二链表移入所述第一链表;

    根据所述第一链表和所述第二链表确定内存泄露信息。

    优选地,在所述将写入有属性信息的存储节点从所述第一链表移入第二
    链表的步骤前,还包括:

    建立所述内存节点的属性信息与所述写入有属性信息的存储节点的索
    引关系。

    优选地,所述当所述内存节点执行内存释放操作时,将所述写入有属性
    信息的存储节点从所述第二链表移入所述第一链表的步骤包括:

    当所述内存节点执行内存释放操作时,根据所述内存节点的属性信息与
    所述写入有属性信息的存储节点的索引关系,在所述第二链表中查找出所述
    内存节点对应的存储节点;

    删除所述存储节点中写入的属性信息;

    将已删除属性信息的存储节点从所述第二链表中移入第一链表。

    优选地,所述根据所述第一链表和所述第二链表确定内存泄露信息的步
    骤包括:

    根据所述第一链表和所述第二链表,输出内存实际使用信息;

    根据所述内存实际使用信息,确定内存泄露信息。

    优选地,所述属性信息包括内存操作编号、内存文件名编号、内存文件
    行号、内存首地址,和/或,内存大小。

    为了解决上述问题,本申请实施例还公开了一种检测内存泄露的装置,
    所述内存中设置有第一链表和第二链表,所述第一链表中具有多个存储节
    点,所述装置包括:

    内存节点确定???,用于确定执行内存申请操作的内存节点,所述内存
    节点具有对应的属性信息;

    属性信息写入???,用于将所述内存节点对应的属性信息,写入所述第
    一链表中的存储节点;

    第一移入???,用于将写入有属性信息的存储节点从所述第一链表移入
    第二链表;

    第二移入???,用于当所述内存节点执行内存释放操作时,将所述写入
    有属性信息的存储节点从所述第二链表移入所述第一链表;

    内存泄露信息确定???,用于根据所述第一链表和所述第二链表确定内
    存泄露信息。

    优选地,所述装置还包括:

    索引关系建立???,用于建立所述内存节点的属性信息与所述写入有属
    性信息的存储节点的索引关系。

    优选地,所述第二移入??榘ǎ?br />

    存储节点查找子???,用于在所述内存节点执行内存释放操作时,根据
    所述内存节点的属性信息与所述写入有属性信息的存储节点的索引关系,在
    所述第二链表中查找出所述内存节点对应的存储节点;

    属性信息删除子???,用于删除所述存储节点中写入的属性信息;

    存储节点移入子???,用于将已删除属性信息的存储节点从所述第二链
    表中移入第一链表。

    优选地,所述内存泄露信息确定??榘ǎ?br />

    内存信息输出子???,用于根据所述第一链表和所述第二链表,输出内
    存实际使用信息;

    内存泄露信息确定子???,用于根据所述内存实际使用信息,确定内存
    泄露信息。

    优选地,所述属性信息包括内存操作编号、内存文件名编号、内存文件
    行号、内存首地址,和/或,内存大小。

    与背景技术相比,本申请实施例包括以下优点:

    在本申请实施例中,通过预先设置两条单向链表,当内存节点执行内存
    申请操作时,将所述内存节点对应的属性信息写入第一链表的存储节点,并
    将所述写入有属性信息的存储节点从第一链表移入第二链表,然后,当所述
    内存节点执行内存释放操作时,又将所述存储节点从第二链表移入第一链
    表,从而可以根据所述第一链表和所述第二链表确定出内存泄露信息,使得
    软件开发人员能够实时地检测出内存泄露的问题,避免了人工操作,提高了
    内存泄露检测的准确性。

    其次,在本申请实施例中,还可以通过使用SHELL命令的方式来提供
    一种用户界面,输出当前仍在使用的内存总大小,每一处内存节点已经申请
    但还未释放的内存在最初申请时所在的文件名编号、内存文件行号,以及内
    存大小等信息,使得软件开发人员能够直观地获得内存使用信息,从而快速
    地确定出内存泄露的问题,并定位到具体的内存节点,提高了内存泄露检测
    的准确性,有助于及时地恢复泄露的内存。

    附图说明

    图1是本申请的一种检测内存泄露的方法实施例一的步骤流程图;

    图2是本申请的一种检测内存泄露的方法实施例二的步骤流程图;

    图3是本申请的一种检测内存泄露的方法实施例三的步骤流程图;

    图4是本申请的一种检测内存泄露的装置实施例的结构框图。

    具体实施方式

    为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图
    和具体实施方式对本申请作进一步详细的说明。

    参照图1,示出了本申请的一种检测内存泄露的方法实施例一的步骤流
    程图,具体可以包括如下步骤:

    步骤101,确定执行内存申请操作的内存节点;

    通常,软件开发人员在编写PGW网元的信令处理子系统代码时,可以
    预先确定需要执行内存操作的节点,所述内存操作包括内存申请操作,和/
    或,内存释放操作。而且,对于已经正式发布的软件版本来说,需要执行内
    存申请操作和内存释放操作的位置是完全固定不变的。

    因此,在本申请实施例中,对于PGW网元的信令处理子系统而言,在
    系统运行过程中,当需要执行内存申请操作时,可以首先确定执行内存申请
    操作的内存节点,所述内存节点具有对应的属性信息,所述属性信息可以包
    括内存操作编号、内存文件名编号、内存文件行号、内存首地址,和/或,
    内存大小。所述属性信息可以分别用于记录在执行内存操作时的操作记录编
    号、执行操作的文件名对应的编号、操作代码所在行号、操作的内存的首地
    址,以及,申请的内存的大小。

    步骤102,将所述内存节点对应的属性信息,写入所述第一链表中的存
    储节点;

    在本申请实施例中,可以预先在所述内存中设置两条单向链表,即第一
    链表和第二链表。初始化时,在所述第一链表中挂接多个存储节点,用于后
    续记录内存节点对应的属性信息。

    因此,当内存节点执行内存申请操作时,可以将所述内存节点对应的属
    性信息,写入所述第一链表中的存储节点。

    步骤103,将写入有属性信息的存储节点从所述第一链表移入第二链表;

    在具体实现中,可以将写入有属性信息的存储节点从所述第一链表中取
    出,然后挂接到第二链表中。此时,第一链表中不再存储有写有所述内存节
    点对应的属性信息的存储节点。

    步骤104,当所述内存节点执行内存释放操作时,将所述写入有属性信
    息的存储节点从所述第二链表移入所述第一链表;

    在具体实现中,当所述内存节点执行内存释放操作时,可以将所述写入
    有属性信息的存储节点从所述第二链表中取出,重新挂接到所述第一链表
    中。

    步骤105,根据所述第一链表和所述第二链表确定内存泄露信息。

    在本申请实施例中,当内存节点执行多次的内存申请和内存释放操作
    后,可以根据此时在所述第一链表和所述第二链表中记录的内存节点的属性
    信息,得出已申请内存但并未及时释放的内存节点,从而确定出内存泄露信
    息。

    在本申请实施例中,通过预先设置两条单向链表,当内存节点执行内存
    申请操作时,将所述内存节点对应的属性信息写入第一链表的存储节点,并
    将所述写入有属性信息的存储节点从第一链表移入第二链表,然后,当所述
    内存节点执行内存释放操作时,又将所述存储节点从第二链表移入第一链
    表,从而可以根据所述第一链表和所述第二链表确定出内存泄露信息,使得
    软件开发人员能够实时地检测出内存泄露的问题,避免了人工操作,提高了
    内存泄露检测的准确性。

    参照图2,示出了本申请的一种检测内存泄露的方法实施例二的步骤流
    程图,具体可以包括如下步骤:

    步骤201,确定执行内存申请操作的内存节点;

    在本申请实施例中,当需要执行内存申请操作时,可以首先确定执行内
    存申请操作的内存节点,所述内存节点具有对应的属性信息,所述属性信息
    可以包括内存操作编号、内存文件名编号、内存文件行号、内存首地址,和
    /或,内存大小。

    步骤202,将所述内存节点对应的属性信息,写入所述第一链表中的存
    储节点;

    在本申请实施例中,可以预先在所述内存中设置两条单向链表,并在所
    述第一链表中挂接多个存储节点。当内存节点执行内存申请操作时,可以将
    所述内存节点对应的属性信息,写入所述第一链表中的一个存储节点。

    步骤203,建立所述内存节点的属性信息与所述写入有属性信息的存储
    节点的索引关系;

    在具体实现中,在将所述内存节点的属性信息写入第一链表中的一个存
    储节点后,可以建立所述内存节点的属性信息与所述存储节点的索引关系。
    具体地,所述索引关系可以通过HASH(哈希)表的方式进行保存。

    在本申请的一种优选实施例中,可以根据所述内存节点的首地址来建立
    起与所述存储节点的索引关系表。

    步骤204,将写入有属性信息的存储节点从所述第一链表移入第二链表;

    在具体实现中,可以将所述存储节点从所述第一链表中取出,挂接到第
    二链表中。

    步骤205,当所述内存节点执行内存释放操作时,将所述写入有属性信
    息的存储节点从所述第二链表移入所述第一链表;

    当所述内存节点执行内存释放操作时,可以将所述内存节点对应的存储
    节点从第二链表中取出,重新挂接到第一链表中。

    在具体实现中,由于已提前建立起所述内存节点的属性信息与所述写入
    有属性信息的存储节点的索引关系,因此,当所述内存节点在执行内存释放
    操作时,可以根据建立的索引关系,查找出所述内存节点对应的存储节点,
    然后,将所述存储节点从第二链表中取出,重新挂接到第一链表中。

    步骤206,根据所述第一链表和所述第二链表确定内存泄露信息。

    在本申请的一种优选实施例中,所述根据所述第一链表和所述第二链表
    确定内存泄露信息具体可以包括如下子步骤:

    子步骤2061,根据所述第一链表和所述第二链表,输出内存实际使用信
    息;

    子步骤2062,根据所述内存实际使用信息,确定内存泄露信息。

    在具体实现中,可以根据所述第一链表和所述第二链表中记录的内存节
    点的属性信息,通过使用SHELL命令的方式来提供一种用户界面,输出当
    前仍在使用的内存总大小,每一处内存节点已经申请但还未释放的内存在最
    初申请时所在的文件名编号、内存文件行号,以及内存大小,得出已申请内
    存但并未及时释放的内存节点,从而确定出内存泄露信息,并定位出出现内
    存泄露的内存节点,有助于及时地恢复泄露的内存。

    在本申请的实施例中,通过预先设置两条单向链表,当内存节点执行内
    存申请操作时,将所述内存节点对应的属性信息写入第一链表的存储节点,
    并建立起所述属性信息与所述存储节点间的索引关系,然后将所述存储节点
    从第一链表移入第二链表,当所述内存节点执行内存释放操作时,根据所述
    索引关系查找出对应的存储节点,将所述存储节点从第二链表中重新移入第
    一链表,从而可以根据所述第一链表和所述第二链表中记录的内存节点属性
    信息,通过用户界面的方式输出内存实际使用信息,从而确定出内存泄露信
    息,使得软件开发人员能够直观地获得内存使用信息,从而快速地确定出内
    存泄露的问题,并定位到具体的内存节点,提高了内存泄露检测的准确性,
    有助于及时地恢复泄露的内存。

    参照图3,示出了本申请的一种检测内存泄露的方法实施例三的步骤流
    程图,具体可以包括如下步骤:

    步骤301,确定执行内存申请操作的内存节点;

    在本申请实施例中,当需要执行内存申请操作时,可以首先确定执行内
    存申请操作的内存节点,所述内存节点具有对应的属性信息,所述属性信息
    可以包括内存操作编号、内存文件名编号、内存文件行号、内存首地址,和
    /或,内存大小。

    步骤302,将所述内存节点对应的属性信息,写入所述第一链表中的存
    储节点;

    在本申请实施例中,可以预先在所述内存中设置两条单向链表,并在所
    述第一链表中挂接多个存储节点。当内存节点执行内存申请操作时,可以将
    所述内存节点对应的属性信息,写入所述第一链表中的一个存储节点。

    步骤303,建立所述内存节点的属性信息与所述写入有属性信息的存储
    节点的索引关系;

    在本申请的一种优选实施例中,可以根据所述内存节点的首地址来建立
    起与所述存储节点的索引关系,所述索引关系可以通过HASH(哈希)表的
    方式进行保存。

    步骤304,将写入有属性信息的存储节点从所述第一链表移入第二链表;

    在具体实现中,可以将所述存储节点从所述第一链表中取出,挂接到第
    二链表中。

    步骤305,当所述内存节点执行内存释放操作时,根据所述内存节点的
    属性信息与所述写入有属性信息的存储节点的索引关系,在所述第二链表中
    查找出所述内存节点对应的存储节点;

    在具体实现中,当所述内存节点在执行内存释放操作时,可以根据所述
    内存首地址与存储节点的索引关系,在所述第二链表中查找出所述内存节点
    对应的存储节点,然后执行步骤306.

    步骤306,删除所述存储节点中写入的属性信息;

    由于所述内存节点在执行内存释放操作后,所述内存节点已不再占用对
    应的内存,因此,此时可以将所述存储节点中写入的属性信息删除。

    步骤307,将已删除属性信息的存储节点从所述第二链表中移入第一链
    表;

    在本申请实施例中,可以将已删除属性信息的存储节点从所述第二链表
    中取出,重新挂接到所述第一链表中,所述第一链表中的所有存储节点均是
    未写入任何信息的空闲可用节点。因此,当有内存节点在执行内存申请操作
    时,可以获取其中的任一一个存储节点。

    步骤308,根据所述第一链表和所述第二链表,输出内存实际使用信息;

    在具体实现中,可以根据所述第一链表和所述第二链表中记录的内存节
    点的属性信息,通过使用SHELL命令的方式来提供一种用户界面,输出当
    前仍在使用的内存总大小、每一处内存节点已经申请但还未释放的内存在最
    初申请时所在的文件名编号、内存文件行号,以及内存大小等内存实际使用
    信息。

    步骤309,根据所述内存实际使用信息,确定内存泄露信息。

    在本申请的实施例中,可以根据用户界面输出的所述内存实际使用信
    息,得出已申请内存但并未及时释放的内存节点,从而确定出内存泄露信息,
    并定位出出现内存泄露的内存节点,有助于及时地恢复泄露的内存。

    在本申请的实施例中,通过预先设置两条单向链表,当内存节点执行内
    存申请操作时,将所述内存节点对应的属性信息写入第一链表的存储节点,
    并建立起内存首地址与所述存储节点间的索引关系,然后将所述存储节点从
    第一链表移入第二链表,当所述内存节点执行内存释放操作时,根据所述索
    引关系查找出对应的存储节点,删除所述存储节点中写入的内存节点属性信
    息,并将所述存储节点从第二链表中重新移入第一链表,使得在执行内存操
    作时,第一链表中的存储节点均为空闲可用节点,而第二链表中均为记录了
    内存节点属性信息的存储节点,从而可以根据所述第一链表和所述第二链表
    输出内存实际使用信息,从而确定出内存泄露信息,使得软件开发人员能够
    直观地获得内存使用信息,从而快速地确定出内存泄露的问题,并定位到具
    体的内存节点,提高了内存泄露检测的准确性,有助于及时地恢复泄露的内
    存。

    需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系
    列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述
    的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或
    者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例
    均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。

    参照图4,示出了本申请的一种检测内存泄露的装置实施例的结构框图,
    所述内存中设置有第一链表和第二链表,所述第一链表中具有多个存储节
    点,所述装置具体可以包括如下??椋?br />

    内存节点确定???01,用于确定执行内存申请操作的内存节点,所述
    内存节点具有对应的属性信息;

    属性信息写入???02,用于将所述内存节点对应的属性信息,写入所
    述第一链表中的存储节点;

    第一移入???03,用于将写入有属性信息的存储节点从所述第一链表
    移入第二链表;

    第二移入???04,用于当所述内存节点执行内存释放操作时,将所述
    写入有属性信息的存储节点从所述第二链表移入所述第一链表;

    内存泄露信息确定???05,用于根据所述第一链表和所述第二链表确
    定内存泄露信息。

    在本申请的实施例中,所述装置还可以包括如下??椋?br />

    索引关系建立???06,用于建立所述内存节点的属性信息与所述写入
    有属性信息的存储节点的索引关系。

    在本申请的实施例中,所述第二移入???04还可以包括如下子??椋?br />

    存储节点查找子???041,用于在所述内存节点执行内存释放操作时,
    根据所述内存节点的属性信息与所述写入有属性信息的存储节点的索引关
    系,在所述第二链表中查找出所述内存节点对应的存储节点;

    属性信息删除子???042,用于删除所述存储节点中写入的属性信息;

    存储节点移入子???043,用于将已删除属性信息的存储节点从所述第
    二链表中移入第一链表。

    在本申请的实施例中,所述内存泄露信息确定???05还可以包括如下
    子??椋?br />

    内存信息输出子???051,用于根据所述第一链表和所述第二链表,输
    出内存实际使用信息;

    内存泄露信息确定子???052,用于根据所述内存实际使用信息,确定
    内存泄露信息。

    在本申请的实施例中,所述属性信息包括内存操作编号、内存文件名编
    号、内存文件行号、内存首地址,和/或,内存大小。

    对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较
    简单,相关之处参见方法实施例的部分说明即可。

    本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明
    的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见
    即可。

    本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装
    置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全
    软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例
    可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介
    质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程
    序产品的形式。

    本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计
    算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令
    实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框
    图中的流程和/或方框的结合??商峁┱庑┘扑慊绦蛑噶畹酵ㄓ眉扑慊?、
    专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生
    一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的
    指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或
    多个方框中指定的功能的装置。

    这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理
    终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读
    存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个
    流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

    这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设
    备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计
    算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用
    于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中
    指定的功能的步骤。

    尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦
    得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,
    所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所
    有变更和修改。

    最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语
    仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求
    或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术
    语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得
    包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且
    还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或
    者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一
    个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终
    端设备中还存在另外的相同要素。

    以上对本申请所提供的一种检测内存泄露的方法和一种检测内存泄露
    的装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方
    式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心
    思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施
    方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对
    本申请的限制。

    关于本文
    本文标题:一种检测内存泄露的方法和装置.pdf
    链接地址://www.4mum.com.cn/p-6001286.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 三肖6码论坛 时时彩二星稳赚技巧 棋牌平台黑客可以破解吗 时时彩人工计划软件哪个准 四川时时开奖号码查询结果 11选5计划软件哪个好用吗 三分pk10是正规的吗 秒速时时网 中国体肓彩票开奖信息 排列三组六全部号码表 1分快三计划软件手机版 pk10冠军杀2码计划 极速时时是否有假 11选五矩阵必中稳赚 幸运飞艇精准实用7码公式 极速快三计划软件免费下载