资源回收方法及装置

著录项
  • CN200710179478.5
  • 20071213
  • CN101178669
  • 20080514
  • 华为技术有限公司
  • 邱霖
  • G06F9/50(2006.01)I
  • G06F9/50(2006.01)I

  • 广东省深圳市龙岗区坂田华为总部办公楼
  • 中国,CN,广东(44)
  • 北京同立钧成知识产权代理有限公司
  • 刘芳
摘要
本发明涉及一种资源回收方法,该方法包括:将过程的唯一标识通知资源回收模块;在执行该过程时,通过资源回收模块申请所需资源,该资源回收模块记录该过程所申请的资源信息及与该资源信息对应的过程的唯一标识;在该过程执行结束,通知资源回收模块;所述资源回收模块查该过程所使用的资源信息,并释放所有对应的资源;另外,本发明还涉及资源回收装置、内存泄漏检查方法及装置,上述方法和装置可以高效地回收各种计算机资源,较好地解决内存泄漏问题,且使用简单、效率高、兼容性好。
权利要求

1.一种资源回收方法,其特征在于包括:

将过程的唯一标识通知资源回收模块;

在执行上述过程时,通过资源回收模块申请所需资源,该资源回收模块 记录该过程所申请的资源信息及与该资源信息对应的过程的唯一标识;

在该过程执行结束,通知资源回收模块;

所述资源回收模块查该过程所使用的资源信息,并释放所有对应的资 源。

2.根据权利要求1所述的资源回收方法,其特征在于所述将过程的唯 一标识通知资源回收模块之前还包括:在创建过程时,为该过程分配唯一的 标识。

3.根据权利要求1或2所述的资源回收方法,其特征在于所述资源回 收模块查该过程中所使用的资源信息具体为:所述资源回收模块根据该过 程的唯一标识查该过程所使用的资源信息。

4.根据权利要求1或2所述的资源回收方法,其特征在于所述通过资 源回收模块向资源管理模块申请所需的资源,该资源回收模块记录该过程所 申请的资源信息及与该资源信息对应的过程的唯一标识具体为:通过内存回 收模块向内存管理模块申请所需的内存,该内存回收模块记录该过程所申请 的内存信息及与该内存信息对应的过程的唯一标识。

5.根据权利要求4所述的资源回收方法,其特征在于所述在该过程执 行结束,通知资源回收模块;所述资源回收模块查该过程所使用的资源信 息,并释放所有对应的资源具体为:在该过程执行结束,通知内存回收模块; 所述内存回收模块查该过程所使用的内存信息,并释放所有对应的内存。

6.一种资源回收装置,包括资源管理模块,其特征在于还包括过程管 理模块和资源回收模块,所述过程管理模块包括:

通知模块,用于将过程的唯一标识或在该过程执行结束,通知资源回收 模块;

申请模块,用于在执行该过程中,通过资源回收模块向资源管理模块申 请所需的资源;

所述资源回收模块包括:

记录模块,用于记录该过程的唯一标识及与该唯一标识对应的过程所申 请的资源信息;

释放模块,用于查该过程中所使用的资源信息,并释放所有对应的资 源。

7.根据权利要求6所述的资源回收装置,其特征在于所述过程管理模 块还包括:分配模块,用于在创建过程时,为该过程分配唯一的标识。

8.根据权利要求6或7所述的资源回收装置,其特征在于所述资源回 收模块具体为内存回收模块,所述资源具体为内存。

9.一种内存泄漏检查方法,其特征在于包括:

将过程的唯一标识通知内存回收模块;

在执行所述过程中,通过内存回收模块申请所需的内存,该内存回收模 块记录该过程所申请的内存信息及与该内存信息对应的过程的唯一标识,且 该过程主动释放已经使用完的内存资源;

在该过程执行结束,通知内存回收模块;

所述内存回收模块查出该过程还没有释放的内存,所述还没有释放的 内存即为泄漏的内存。

10.根据权利要求9所述的内存泄漏检查方法,其特征在于所述将过程 的唯一标识通知资源回收模块之前还包括:在创建过程时,为该过程分配唯 一的标识。

11.根据权利要求9或10所述的内存泄漏检查方法,其特征在于所述 内存回收模块查出该过程还没有释放的内存具体为:所述内存回收模块根 据该过程的唯一标识查出该过程还没有释放的内存。

12.根据权利要求11所述的内存泄漏检查方法,其特征在于所述内存 回收模块查出该过程还没有释放的内存之后还包括:修改该过程。

13.根据权利要求11所述的内存泄漏检查方法,其特征在于所述内存 回收模块查出该过程还没有释放的内存之后还包括:将还没有释放的内存 释放完。

14.一种内存泄漏检查装置,包括内存管理模块,其特征在于还包括: 过程管理模块和内存回收模块,所述过程管理模块包括:

通知模块,用于将过程的唯一标识或在该过程执行结束,通知内存回收 模块;

申请模块,用于在执行该过程中,通过资源回收模块向内存管理模块申 请所需的内存;

主动释放模块,用于主动释放已经使用完的内存资源;

所述内存回收模块包括:

记录模块,用于记录该过程的唯一标识及与该唯一标识对应的过程所申 请的内存信息和主动释放的内存信息;

查模块,用于查出该过程还没有释放的内存。

15.根据权利要求14所述的内存泄漏检查装置,其特征在于所述过程 管理模块还包括:分配模块,用于在创建过程时,为该过程分配唯一的标识。

16.根据权利要求14或15所述的内存泄漏检查装置,其特征在于所述 过程管理模块还包括:修改模块,用于修改该过程。

17.根据权利要求14或15所述的内存泄漏检查装置,其特征在于所述 内存回收模块还包括:释放模块,用于将还没有释放的内存释放完。

说明书
技术领域

技术领域

本发明涉及计算机领域,特别涉及一种资源回收方法及装置和内存泄漏 检查方法及装置。

背景技术

目前,计算机及通信行业中,对于要求长时间不停机使用的设备来说, 及时地释放不需要的资源、充分地利用已有资源是保证系统的运行效率及运 行质量的一个重要因素。

但是,目前各种资源的回收方法并不能完全地、高效率地回收各种资源, 例如内存泄漏问题就是一个比较严重的问题,内存泄漏是指在程序中动态分 配的内存在使用后没有及时的释放掉而造成的系统无法再次使用,这种情况 在使用C/C++等语言开发的系统中尤其严重。

目前,针对内存泄漏主要是通过以下三种方式发现的:

1、利用专用工具进行检查,如PC-LINT、Purify等。这种方法主要通过 静态扫描代码或者通过监控系统运行来发现存在的潜在内存漏泄问题。

2、利用通用内存回收机制进行检查,目前,Java等语言提供了通用内 存回收机制,该方法主要是通过扫描系统所使用的内存,没有被引用的内存 即认为是垃圾内存,可以回收重新使用。

3、通过编写高质量的源代码来避免内存泄漏。

但是,在实现本发明的过程中,发明人发现现有技术中至少存在如下问 题:第一种方法检查不全面、系统正常运行时无法使用,因为无论是静态工 具或者动态工具,都无法全面的分析代码各种运行路径,所以不可能发现所 有可能的内存泄漏问题,并且专用工具一般是在系统测试过程中使用,系统 在运行时无法发现并解决内存泄漏问题;第二种方法回收效率低,虽然有各 种优化算法,但由于需要扫描全系统的内存使用情况,所以效率无法满足实 时系统的响应时间的要求(一般要求为毫秒级),回收机制无法控制,由于 实时系统要求必须对消息在指定的时间作出响应,而回收机制要求挂起整个 系统,同时因为回收时间较长,这个是实时系统无法接受的,过于依赖于系 统运行的环境,只能运用于Java等语言开发的系统,无法运用于其它语言开 发的系统;采用第三种方法,由于系统复杂,处理流程分支特别多,需要处 理地异常情况也是千差万别,很容易出现在某些场景下开发人员因考虑不周 导致申请了内存却没有释放,因此这种方法给开发人员带来了很大的负担, 并且问题也很难得到彻底解决。

综上所述,目前缺少一种使用简单、效率高、兼容性好、人员及开发环 境依赖度低、能较好运用于实时系统的资源回收方法和内存泄漏检查方法。

发明内容

本发明实施例提供了一种资源回收方法及装置和内存泄漏检查方法及装 置,以高效地回收各种计算机资源,较好地解决内存泄漏问题,且使用简单、 效率高、兼容性好。

本发明实施例提供了一种资源回收方法,该方法具体包括:

将过程的唯一标识通知资源回收模块;

在执行该过程时,通过资源回收模块申请所需资源,该资源回收模块记 录该过程所申请的资源信息及与该资源信息对应的过程的唯一标识;

在该过程执行结束,通知资源回收模块;

所述资源回收模块查该过程所使用的资源信息,并释放所有对应的资 源。

该方法,采用基于过程的资源回收方法,使用简单、运行效率高、兼容 性好,且能较好地避免资源长期未被使用而没有释放的情况,适于有资源管 理的各种实时系统。

本发明实施例提供了一种资源回收装置,该装置具体包括:资源管理模 块、过程管理模块和资源回收模块;

其中,过程管理模块包括:通知模块,用于将过程的唯一标识或在该过 程执行结束,通知资源回收模块;申请模块,用于在执行该过程中,通过资 源回收模块向资源管理模块申请所需的资源;

其中,资源回收模块包括:记录模块,用于记录该过程所申请的资源信 息及与该资源信息对应的过程的唯一标识;释放模块,用于查该过程中所 使用的资源信息,并释放所有对应的资源。

该装置,采用基于过程的资源回收机制,使用简单、运行效率高、兼容 性好,且能较好地避免资源长期未被使用而没有释放的情况,适于有资源管 理的各种实时系统。

本发明实施例提供了一种内存泄漏检查方法,该方法具体包括:

将过程的唯一标识通知内存回收模块;

在执行该过程中,通过内存回收模块向内存管理模块申请所需的内存, 该内存回收模块记录该过程所申请的内存信息及与该内存信息对应的过程的 唯一标识,且该过程主动释放已经使用完的内存资源;

在该过程执行结束,通知内存回收模块;

所述内存回收模块查出该过程还没有释放的内存,所述还没有释放的 内存即为泄漏的内存。

该方法,采用基于过程的机制查泄漏的内存,能完全地发现内存泄漏 问题,也可以较好地回收查到的泄漏的内存,同时,该方法使用简单、运 行效率高、兼容性好,且适合实时系统。

本发明实施例提供了一种内存泄漏检查装置,该装置具体包括:内存管 理模块、过程管理模块和内存回收模块;

其中,过程管理模块包括:通知模块,用于将过程的唯一标识或在该过 程执行结束,通知内存回收模块;申请模块,用于在执行该过程中,通过资 源回收模块向内存管理模块申请所需的内存;主动释放模块,用于主动释放 已经使用完的内存资源;

其中,内存回收模块包括:记录模块,用于记录该过程所申请的内存信 息及与该内存信息对应的过程的唯一标识和主动释放的内存信息;查模块, 用于查出该过程还没有释放的内存。

该装置,采用基于过程的内存回收机制,在回收资源时,不需要扫描全 系统的内存使用情况,运行效率高;可以兼容所有的内存分配算法,兼容性 好;能完全地解决内存泄漏问题,同时可以避免重复释放内存的问题和其它 常见的内存问题。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

图1为本发明资源回收方法实施例的流程图;

图2为本发明资源回收方法另一实施例的流程图;

图3为本发明资源回收装置实施例的结构示意图;

图4为本发明内存泄漏检查方法实施例的流程图;

图5为本发明内存泄漏检查装置实施例的结构示意图。

具体实施方式

如图1所示,为本发明资源回收方法实施例的流程图,该方法具体包括:

步骤101、将过程的唯一标识通知资源回收模块;

在该步骤之前还可以包括:在首次创建过程时,为该过程分配唯一的标 识,且通过向资源回收模块注册过程标识来将该过程的标识通知资源回收模 块,上述过程是一个通用的概念,包括所有具有开始、结束的处理流程,例 如一次呼叫、链路或数据的一次连接使用、一次事务处理、一次会话等等, 上述唯一标识可以是过程名等信息,只要保证在全系统内唯一即可;

步骤102、在执行该过程时,通过资源回收模块申请所需资源,该资源 回收模块记录该过程所申请的资源信息及与该资源信息对应的过程的唯一标 识;

在执行该过程时,通过资源回收模块向资源管理模块申请所需资源,该 资源回收模块记录该过程所申请的资源信息及该过程的唯一标识,并将二者 关联起来,上述资源信息包括资源的大小、资源的类型等信息;

步骤103、在该过程执行结束,通知资源回收模块;

步骤104、资源回收模块查该过程所使用的资源信息,并释放所有对 应的资源。

当资源回收模块获知该过程结束时,根据该过程的唯一标识查该过程 所使用的资源信息,并释放对应的资源。

另外,上述实施例中的资源可以为各种计算机资源,如内存、硬盘、带 宽或句柄等。

上述方法,采用基于过程的资源回收方法,在每个过程结束后,统一释 放资源,可以避免过早地释放资源而造成访问无效的问题,也可以避免同一 资源释放多次的问题,由于每次过程执行结束后都会自动释放资源,所有资 源的回收时机是受控的,很适合实时系统,同时,该方法是基于过程的资源 管理,资源回收效率很高,且使用简单。

如图2所示,本发明资源回收方法另一实施例的流程图,该方法具体包 括:

步骤201、将过程的唯一标识通知内存回收模块;

在步骤201之前还可以包括:在首次创建过程时,为该过程分配唯一的 标识,且通过向内存回收模块注册过程标识来将该过程的标识通知内存回收 模块;

步骤202、在执行该过程中,通过内存回收模块申请所需的内存,该内 存回收模块记录该过程所申请的内存信息;

在执行该过程时,通过内存回收模块向内存管理模块申请所需资源,该 内存回收模块记录该过程所申请的内存信息,上述内存信息包括内存地址、 内存大小、对应的过程唯一标识等信息,另外,关于管理申请的内存和过程 唯一标识的对应关系,可以根据系统的需要,采用不同的数据结构,以减少 存储容量和提高查效率;

步骤203、在该过程执行结束,通知内存回收模块;

步骤204、内存回收模块查该过程所使用的内存信息,并释放所有对 应的内存。

当内存回收模块获知该过程结束时,根据该过程的唯一标识查该过程 所使用的内存信息,并释放对应的内存。

该方法是由系统负责内存的管理与释放,不会出现内存长期未被使用而 没有释放的情况,因而可以避免内存泄漏问题的出现;基于过程的内存管理, 不需要扫描全系统的内存,大大提高了内存回收的效率;同时,该方法可以 兼容所有的内存分配算法,兼容性好;可以避免重复释放内存的问题和其它 常见的内存问题,且使用简单。

如图3所示,为本发明资源回收装置实施例的结构示意图,该装置具体 包括:过程管理模块11、资源回收模块12和资源管理模块13,其中,上述 过程管理模块11包括:通知模块111,用于将过程的唯一标识或在该过程执 行结束,通知资源回收模块;申请模块112,用于在执行该过程中,通过资 源回收模块向资源管理模块申请所需的资源。上述资源回收模块12包括:记 录模块121,用于记录该过程的唯一标识及与该唯一标识对应的过程所申请 的资源信息;释放模块122,用于查该过程中所使用的资源信息,并释放 所有对应的资源。

另外,上述过程管理模块还包括:分配模块,用于在创建过程时,为该 过程分配唯一的标识;上述资源可以为各种计算机资源,如内存、硬盘、带 宽或句柄等。

上述装置利用过程管理模块中的通知模块将过程的唯一标识发送给资源 管理模块的记录模块,然后利用过程管理模块中的申请模块通过资源回收模 块向资源管理模块申请所需的资源,同时,资源回收模块中的记录模块记录 该过程申请的资源信息,并将二者关联起来,当该过程执行结束时,利用过 程管理模块中的通知模块通知资源管理模块中的释放模块,释放模块根据该 过程的唯一标识从记录模块记录的信息中查该过程所使用的资源信息,并 释放所有对应的资源。

上述装置,采用基于过程的资源回收机制,使用简单、运行效率高、兼 容性好,且能较好地避免资源长期未被使用而没有释放的情况,适于有资源 管理的各种实时系统。

如图4所示,为本发明内存泄漏检查方法实施例的流程图,该方法具体 包括:

步骤301、将过程的唯一标识通知内存回收模块;

步骤302、在执行该过程中,通过内存回收模块申请所需的内存,该内 存回收模块记录该过程所申请的内存信息;

上述步骤301和步骤302与内存回收方法实施例中的步骤201和步骤202 的操作一样;

步骤303、在执行该过程中,该过程主动释放已经使用完的内存资源;

该方法与内存回收方法实施例的最大区别之一就在于该方法在执行该过 程的过程中,主动释放已经使用完的内存资源;

步骤304、在该过程执行结束,通知内存回收模块;

步骤305、内存回收模块查出该过程还没有释放的内存,上述还没有 释放的内存即为泄漏的内存。

当内存回收模块获知该过程结束时,根据该过程的唯一标识查出该过 程还没有释放的内存,上述还没有释放的内存即为泄漏的内存;在发现泄漏 的内存之后,可以通过主动修改该过程来消除内存泄露问题,也可以通过释 放上述泄漏的内存来回收内存资源。

上述方法,采用基于过程的机制查泄漏的内存,能完全地发现内存泄 漏问题,也可以较好地回收查到的泄漏的内存,同时,该方法使用简单、 运行效率高、兼容性好,且适合实时系统。

如图5所示,为本发明内存泄漏检查装置实施例的结构示意图,该装置 具体包括:过程管理模块21、内存回收模块22和内存管理模块23,其中, 上述过程管理模块21包括:通知模块111,用于将过程的唯一标识或在该过 程执行结束,通知内存回收模块;申请模块112,用于在执行该过程中,向 内存管理模块申请所需的内存;主动释放模块211,用于主动释放已经使用 完的内存资源;上述内存回收模块22包括:记录模块121,用于记录该过程 的唯一标识及与该唯一标识对应的过程所申请的内存信息和主动释放的内存 信息;查模块221,用于查出该过程还没有释放的内存。

上述过程管理模块还包括:分配模块,用于在创建过程时,为该过程分 配唯一的标识;另外,当查模块查到还没有释放的内存时,即发现内存 泄漏时,可以重新修改该过程以避免内存泄漏问题,或再次释放还没有释放 完的内存,因此上述过程管理模块还可以包括:修改模块,用于修改该过程; 上述内存回收模块还可以包括:释放模块,用于将还没有释放的内存释放完。

上述装置利用过程管理模块中的通知模块将过程的唯一标识发送给内存 管理模块的记录模块,然后利用过程管理模块中的申请模块通过内存回收模 块向内存管理模块申请所需的内存,同时,内存回收模块中的记录模块记录 该过程申请的内存信息,并将二者关联起来,在执行该过程中,会主动释放 已经使用完的内存,并将释放的内存信息通知记录模块,当该过程执行结束 时,利用过程管理模块中的通知模块通知内存管理模块中的查模块,查 模块根据该过程的唯一标识从记录模块记录的信息中查出该过程还没有释 放的内存,上述还没有释放的内存即为泄漏的内存,当查模块查到泄漏 的内存后可通过修改模块修改该过程,以消除内存泄漏问题,也可以再释放 泄漏的内存,以回收这些内存资源。

上述装置,采用基于过程的机制查泄漏的内存,能完全地发现内存泄 漏问题,也可以较好地回收查到的泄漏的内存,同时,该方法使用简单、 运行效率高、兼容性好,且适合实时系统。

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

本文发布于:2024-09-24 04:26:12,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/86336.html

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

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议