一种回收泄露的程序运行资源的方法及装置的制造方法

文档序号:8412407阅读:324来源:国知局
一种回收泄露的程序运行资源的方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别涉及一种回收泄露的程序运行资源方法及装置。
【背景技术】
[0002]程序运行资源,如内存、文件句柄、信号量、数据库连接池、线程池等是程序运行时需要的关键资源。在运行过程中,程序在需要使用程序运行资源时提出申请,在使用结束后及时释放所占用的程序运行资源;若没有及时释放已占用的程序运行资源,就会出现程序运行资源泄漏的问题。下面以内存泄漏为例,对程序运行资源泄漏的问题作具体说明。
[0003]内存泄漏是指由于设计或编码问题等造成程序没有及时释放已经不再使用的内存,导致系统的可用内存越来越少,随着程序长时间运行,内存泄漏越来越严重,最终可能导致系统由于内存不足而使业务受损或中断。内存泄漏是程序运行过程中容易出现而又难以避免的问题,随着软件规模越来越大、复杂度越来越高,系统中出现内存泄漏的概率也越来越高。
[0004]针对内存泄漏的问题,现有检测内存泄漏的方法之一是采用静态分析的方法,这种方法不需要运行程序,而是通过人工或自动化工具分析程序代码以检查代码中内存分配和释放的匹配情况。对于内存分配和释放的对应关系比较简单的情况,静态分析方法通常可以有效检测出潜在的内存泄漏。
[0005]现有检测内存泄漏的方法之二是在程序运行过程中动态监控内存的分配和释放,并结合对内存生命周期的判断来检测内存泄漏。
[0006]虽然目前可以检测出程序运行资源出现泄露的情况,但是无法实现对泄露的程序运行资源进行回收,因此,仍然未解决系统由于内存不足而使业务受损或中断的问题。

【发明内容】

[0007]本发明实施例提供一种回收泄露的程序运行资源的方法及装置,用以解决现有技术中存在的系统由于程序运行资源不足而使业务受损或中断的问题。
[0008]本发明实施例提供的具体技术方案如下:
[0009]一种回收泄露的程序运行资源的方法,包括:
[0010]为待运行的第一程序申请程序运行资源,使得所述第一程序利用所述程序运行资源进行运行;
[0011]在成功申请所述程序运行资源后,启动定时器;
[0012]确定所述定时器超时,及未释放为所述第一程序申请的所述程序运行资源时,释放为所述第一程序申请的所述程序运行资源,禁止所述第一程序利用所述程序运行资源进行运行。
[0013]进一步的,本发明实施例中,释放为所述第一程序申请的所述程序运行资源之后,禁止所述第一程序利用所述程序运行资源进行运行之前,还包括:
[0014]检测到所述第一程序调用所述程序运行资源时,确定所述程序运行资源的地址无效。
[0015]较佳的,本发明实施例中,确定所述程序运行资源的地址无效,具体包括:
[0016]确定第一时间点位于第二时间点之前时,确定所述程序运行资源的地址无效,所述第二时间点为第二程序成功申请所述程序运行资源的地址时的时间点,所述第一时间点为所述第一程序成功申请所述程序运行资源的地址时的时间点;或者
[0017]确定所述程序运行资源的地址未被所述程序所成功申请,确定所述程序运行资源的地址无效。
[0018]进一步的,本发明实施例中,确定所述第一时间点位于第二时间点之前之前,还包括:
[0019]查找所述程序运行资源的地址,并将与查找到的所述程序运行资源的地址当前所对应的申请时间点作为第二时间点。
[0020]较佳的,本发明实施例中,查找所述程序运行资源的地址,具体包括:
[0021]对存储的程序运行资源的地址进行排序;
[0022]将排序后的程序运行资源的地址采用哈希算法进行查找。
[0023]较佳的,本发明实施例中,所述定时器的预设时长为分钟级。
[0024]进一步的,本发明实施例中,在所述定时器超时前,若所述第一程序利用所述程序运行资源完成运行,释放为所述第一程序申请的所述程序运行资源,停止所述定时器的操作。
[0025]一种回收泄露的程序运行资源的装置,包括:
[0026]申请单元,用于为待运行的第一程序申请程序运行资源,使得所述第一程序利用所述程序运行资源进行运行;
[0027]启动单元,用于在成功申请所述程序运行资源后,启动定时器;
[0028]释放单元,用于确定所述定时器超时,及未释放为所述第一程序申请的所述程序运行资源时,释放为所述第一程序申请的所述程序运行资源,禁止所述第一程序利用所述程序运行资源进行运行。
[0029]进一步的,本发明实施例中,还包括确定单元,用于检测到所述第一程序调用所述程序运行资源时,确定所述程序运行资源的地址无效。
[0030]较佳的,本发明实施例中,所述确定单元确定所述程序运行资源的地址无效时,具体为:
[0031]确定第一时间点位于第二时间点之前时,确定所述程序运行资源的地址无效,所述第二时间点为第二程序成功申请所述程序运行资源的地址时的时间点,所述第一时间点为所述第一程序成功申请所述程序运行资源的地址时的时间点;或者
[0032]确定所述程序运行资源的地址未被所述程序所成功申请,确定所述程序运行资源的地址无效。
[0033]进一步的,本发明实施例中,所述确定单元还用于:
[0034]查找所述程序运行资源的地址,并将与查找到的所述程序运行资源的地址当前所对应的申请时间点作为第二时间点。
[0035]较佳的,本发明实施例中,所述确定单元查找所述程序运行资源的地址时,具体为:
[0036]对存储的程序运行资源的地址进行排序;
[0037]将排序后的程序运行资源的地址采用哈希算法进行查找。
[0038]较佳的,本发明实施例中,所述定时器的预设时长为分钟级。
[0039]进一步的,本发明实施例中,所述释放单元还用于:
[0040]在所述定时器超时前,若所述第一程序利用所述程序运行资源完成运行,释放为所述第一程序申请的所述程序运行资源,停止所述定时器的操作。
[0041]本发明实施例中,提供一种回收泄露的程序运行资源的方法,在该方案中,为待运行的第一程序申请程序运行资源,使得第一程序利用程序运行资源进行运行;在成功申请程序运行资源后,启动定时器;确定定时器超时,及未释放为第一程序申请的程序运行资源时,释放为第一程序申请的程序运行资源,禁止第一程序利用程序运行资源进行运行,由于在定时器超时时就将程序运行资源释放,因此,解决了现有技术中存在的系统由于程序运行资源不足而使业务受损或中断的问题。
【附图说明】
[0042]图1为本发明实施例中回收泄露的程序运行资源的流程图;
[0043]图2为本发明实施例中回收泄露的程序运行资源的实施例;
[0044]图3为本发明实施例中回收泄露的程序运行资源的装置的结构示意图。
【具体实施方式】
[0045]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0046]本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另夕卜,本文中字母“/”,一般表示前后关联对象是一种“或”的关系。
[0047]下面结合说明书附图对本发明优选的实施方式进行详细说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0048]下面结合附图对本发明优选的实施方式进行详细说明。
[0049]参阅图1所示,本发明实施例中,回收泄露的程序运行资源的流程如下:
[0050]步骤100:为待运行的第一程序申请程序运行资源,使得第一程序利用程序运行资源进
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1