一种进程资源回收方法及装置与流程

文档序号:15444982发布日期:2018-09-14 23:15阅读:128来源:国知局

本发明涉及互联网技术领域,尤其涉及一种进程资源回收方法及装置。



背景技术:

在共享资源(包括内存和处理能力)的多进程处理系统中,会出现个别进程崩溃后此进程的相关资源无法回收或者回收速度很慢的问题,此问题会进一步导致系统资源利用率低的问题,例如崩溃进程的资源被占用无法被利用,其它进程无法申请新的资源等。

现有技术中使用以下三种方式解决此问题:

方式一,申请资源的进程负责释放资源;

方式二,最后一个退出的进程负责释放资源;

方式三,使用进程间的引用计数。

方式一中,当申请资源的进程异常退出,会导致资源无法释放,即使结合方式二也会出现资源长时间无法释放,系统资源紧张的问题。

方式二中,资源释放慢,必须等到所有进程都退出才能进行资源释放,这无疑会导致大量系统资源被长时间占用,是一种系统级别的资源浪费。

方式三中,无法处理资源的循环引用问题,导致资源无法释放。例如,资源a引用资源b,资源b又引用资源a,那么两个资源的引用计数永远不为0,导致资源无法释放。

现有技术中的缺点包括:

一,在特殊情况下,例如进程意外崩溃,资源无法被回收。

二,无用的资源长时间得不到释放。

三,在正常情况下,有些资源无法释放,严重的限制了共享资源的使用方式。



技术实现要素:

为了解决上述技术问题,本发明提供了一种进程资源回收方法及装置。

本发明提供的进程资源回收方法,包括:

主进程维护工作进程资源信息,所述工作进程资源信息包括工作进程的资源引用信息;

主进程判断工作进程处于非工作状态时,删除所述工作进程资源信息中所述工作进程的资源引用信息,调用垃圾回收器回收所述工作进程的资源引用信息所对应的资源。

上述进程资源回收方法还具有以下特点:

所述工作进程资源信息包括工作进程列表和每个工作进程的资源引用信息,所述工作进程列表包括工作进程标识,所述资源引用信息包括工作进程的资源引用列表。

上述进程资源回收方法还具有以下特点:

所述主进程维护工作进程资源信息包括以下方法中的一种:

一,从工作进程接收启动通知,获知新启动的工作进程的标识和资源引用列表,将所述新启动的工作进程的标识加入所述工作进程列表,在所述工作进程的资源引用信息中记录所述工作进程的资源引用列表;

二,定时扫描工作线程列表检测是否有新加入的工作进程,如果是,确定此新加入的工作进程为新启动的工作进程,更新所述工作进程资源信息,确定所述工作线程列表中新加入的工作进程的标识,确定所述新加入的工作进程的资源引用信息。

上述进程资源回收方法还具有以下特点:

所述主进程判断工作进程处于非工作状态的方法是以下方法中的一种:

一,从工作进程接收到退出请求后确定此工作进程处于非工作状态;

二,定时扫描工作线程列表检测各工作线程的标识对应的工作线程是否存在,如果不存在,确定所述工作进程处于非工作状态。

上述进程资源回收方法还具有以下特点:

所述调用垃圾回收器回收所述工作进程的资源引用信息包括:调用垃圾回收器使用内存回收算法回收所述工作进程的资源引用列表,将所述工作进程的资源引用列表作为所述内存回收算法的拓扑起点。

上述进程资源回收方法还具有以下特点:

所述方法还包括:

所述垃圾回收器的执行进程与工作进程非并行执行时,所述主进程调用垃圾回收器使用内存回收算法在第一轮内存回收算法执行过程内回收所述工作进程的资源引用列表中不被任何工作进程引用的资源;

所述垃圾回收器的执行进程与工作进程并行执行时,所述主进程调用垃圾回收器使用内存回收算法在第一轮内存回收算法执行过程或第二轮内存回收算法执行过程内回收所述工作进程的资源引用列表中不被任何工作进程引用的资源。

本发明提供的进程资源回收装置,包括:

维护模块,用于维护工作进程资源信息;所述工作进程资源信息包括工作进程的资源引用信息;

判断模块,用于判断工作进程是否处于非工作状态;

删除模块,用于在工作进程处于非工作状态时,删除所述工作进程资源信息中所述工作进程的资源引用信息;

回收模块,调用垃圾回收器回收所述工作进程的资源引用信息所对应的资源。

上述进程资源回收装置还具有以下特点:

所述工作进程资源信息包括工作进程列表和每个工作进程的资源引用信息,所述工作进程列表包括工作进程标识,所述资源引用信息包括工作进程的资源引用列表。

上述进程资源回收装置还具有以下特点:

所述维护模块包括接收单元、处理单元;

所述接收单元,用于从工作进程接收启动通知,获知新启动的工作进程的标识和资源引用列表;

所述处理单元,用于将所述新启动的工作进程的标识加入所述工作进程列表,在所述工作进程的资源引用信息中记录所述工作进程的资源引用列表;

或者,所述维护模块包括扫描单元和维护单元;

所述扫描单元,用于定时扫描工作线程列表检测是否有新加入的工作进程;

所述维护单元,用于在检测到有新加入的工作进程后,确定此新加入的工作进程为新启动的工作进程,更新所述工作进程资源信息,确定所述工作线程列表中新加入的工作进程的标识,确定所述新加入的工作进程的资源引用信息。

上述进程资源回收装置还具有以下特点:

所述判断模块,用于使用以下方法判断工作进程是否处于非工作状态;

一,从工作进程接收到退出请求后确定此工作进程处于非工作状态;

二,定时扫描工作线程列表检测各工作线程的标识对应的工作线程是否存在,如果不存在,确定所述工作进程处于非工作状态。

上述进程资源回收装置还具有以下特点:

所述回收模块,用于使用以下方法调用垃圾回收器回收所述工作进程的资源引用信息:调用垃圾回收器使用内存回收算法回收所述工作进程的资源引用列表,将所述工作进程所引用的资源引用列表作为所述内存回收算法的拓扑起点。

上述进程资源回收装置还具有以下特点:

所述回收模块,还用于在垃圾回收器的执行进程与工作进程非并行执行时,调用垃圾回收器使用内存回收算法在第一轮内存回收算法执行过程内回收上述工作进程的资源引用列表中不被任何工作进程引用的资源;在垃圾回收器的执行进程与工作进程并行执行时,调用垃圾回收器使用内存回收算法在第一轮内存回收算法执行过程或第二轮内存回收算法执行过程内回收上述工作进程的资源引用列表中不被任何工作进程引用的资源。

本发明可以有效解决资源长时间无法释放的问题,避免资源被长时间占用。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是实施例中进程资源回收方法的流程图;

图2是实施例中进程资源回收方法中主进程维护工作进程资源信息的应用示意图;

图3是实施例中进程资源回收装置的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

图1是实施例中进程资源回收方法的流程图,此方法包括:

步骤1,主进程维护工作进程资源信息;此工作进程资源信息包括工作进程的资源引用信息;

步骤2,主进程判断工作进程处于非工作状态时,删除工作进程资源信息中工作进程的资源引用信息,调用垃圾回收器回收上述工作进程的资源引用信息所对应的资源。

本方法的整体结构上采用主进程—工作进程的方式。主进程持有所有工作进程的资源引用关系,并且负责检测工作进程是否处于非工作状态,在检测到工作进程是否处于非工作状态时,主动触发该进程相关资源的回收。

图2是实施例中进程资源回收方法中主进程维护工作进程资源信息的应用示意图。每个工作进程都记录着自己引用的资源,并将对这些资源的引用信息存储在资源引用列表中。此资源引用列表中存放的是进程对资源的直接引用类型的信息,资源之间的相互引用关系由资源内部记录。

步骤1中工作进程资源信息包括工作进程列表和每个工作进程的资源引用信息,工作进程列表包括工作进程标识,资源引用信息包括工作进程的资源引用列表。资源引用信息除了包括工作进程的资源引用列表,还可以包括其它信息,例如工作进程所引用的资源的类型,资源地址所在存储分区等。

步骤1中主进程维护工作进程资源信息包括以下方法中的一种:

一,从工作进程接收启动通知,从此工作进程获知新启动的工作进程的标识和资源引用列表,将新启动的工作进程的标识加入工作进程列表,在工作进程的资源引用信息中记录工作进程的资源引用列表。此方式一中主进程和工作进程之间可以通过已有的通信机制或自定义的通信机制进行信息交互。

二,定时扫描工作线程列表检测是否有新加入的工作进程,如果是,确定此新加入的工作进程为新启动的工作进程,更新所述工作进程资源信息,确定所述工作线程列表中新加入的工作进程的标识,确定所述新加入的工作进程的资源引用信息。此方式二中主进程和工作进程之间不直接交互,新的工作进程启动后,直接到主进程维护的工作进程资源信息中进行注册其标识和资源引用信息。

步骤2中主进程判断工作进程处于非工作状态的方法是以下方法中的一种:

一,从工作进程接收到退出请求后确定此工作进程处于非工作状态;

二,定时扫描工作线程列表检测各工作线程的标识对应的工作线程是否存在,如果不存在,确定工作进程处于非工作状态。

步骤2中调用垃圾回收器回收上述工作进程的资源引用信息包括:调用垃圾回收器使用内存回收算法回收上述工作进程的资源引用列表,将上述工作进程的资源引用列表作为内存回收算法的拓扑起点。

内存回收算法是一种循环执行的算法,例如垃圾收集(garbagecollection,简称gc)算法,此方法包括两个阶段:标记阶段和清除阶段。在标记阶段,垃圾回收器从根开始遍历,将每个可以从根访问到的对像添加一个标识,用于指示此对像可达(reachable)。在清除阶段,垃圾回收器对内存从头到尾进行线性遍历,如果发现有对像没有被标识为可达,则将此对像占用的内存回收,并将已被标识为可达的对像的可达标识消除,以使进行下一次的标记清除算法。

调用垃圾回收器回收上述工作进程的资源引用信息时,垃圾回收器的执行进程与工作进程非并行执行时,主进程调用垃圾回收器使用内存回收算法在第一轮内存回收算法执行过程内回收上述工作进程的资源引用列表中不被任何工作进程引用的资源;垃圾回收器的执行进程与工作进程并行执行时,主进程调用垃圾回收器使用内存回收算法在第一轮内存回收算法执行过程或第二轮内存回收算法执行过程内回收上述工作进程的资源引用列表中不被任何工作进程引用的资源。

例如:整个系统中有两个工作进程,pa和pb,各自引用的资源如下:

pa:r1,r2,r3,r4

pb:r3,r4,r5

进程pa异常退出后处于非工作状态,主进程调用垃圾回收器使用内存回收算法回收工作进程pa的资源,如果垃圾回收器的处理进程只在主进程调用时才启动,则在执行第一轮gc算法时,在标记阶段将r1和r2标记为不可达,将r3,r4和r5标记为可达,在清除阶段即可将r1和r2回收。如果垃圾回收器的处理进程和主进程是同时并行执行的,主进程调用垃圾回收器时,当前gc算法的处理阶段不可知,如果此时gc算法已执行到清除阶段,则此时r1和r2的状态为可达,不能在此轮gc算法中被回收,但在下一轮gc算法中r1和r2将在标识阶段被标记为不可达,并在下一轮的清除阶段被回收。所以本方法可以在最长两个回收周期内将无用资源释放,避免资源被长期占用。

图3是实施例中进程资源回收装置的结构图,此进程资源回收装置包括:

维护模块,用于维护工作进程资源信息;工作进程资源信息包括工作进程的资源引用信息;

判断模块,用于判断工作进程是否处于非工作状态;

删除模块,用于在工作进程处于非工作状态时,删除工作进程资源信息中工作进程的资源引用信息;

回收模块,调用垃圾回收器回收工作进程的资源引用信息所对应的资源。

其中,

工作进程资源信息包括工作进程列表和每个工作进程的资源引用信息,工作进程列表包括工作进程标识,资源引用信息包括工作进程的资源引用列表。

维护模块可以是以下结构中的一种:

一,维护模块包括接收单元、处理单元。

接收单元用于从工作进程接收启动通知,获知新启动的工作进程的标识和资源引用列表;

处理单元用于将新启动的工作进程的标识加入工作进程列表,在工作进程的资源引用信息中记录工作进程的资源引用列表;

二,维护模块包括扫描单元和维护单元。

扫描单元用于定时扫描工作线程列表检测是否有新加入的工作进程;

维护单元用于在检测到有新加入的工作进程后,确定此新加入的工作进程为新启动的工作进程,更新工作进程资源信息,确定工作线程列表中新加入的工作进程的标识,确定新加入的工作进程的资源引用信息。

判断模块用于使用以下方法判断工作进程是否处于非工作状态:

一,从工作进程接收到退出请求后确定此工作进程处于非工作状态;

二,定时扫描工作线程列表检测各工作线程的标识对应的工作线程是否存在,如果不存在,确定工作进程处于非工作状态。

回收模块用于使用以下方法调用垃圾回收器回收工作进程的资源引用信息:调用垃圾回收器使用内存回收算法回收工作进程的资源引用列表,将工作进程所引用的资源引用列表作为内存回收算法的拓扑起点。

回收模块还用于在垃圾回收器的执行进程与工作进程非并行执行时,调用垃圾回收器使用内存回收算法在第一轮内存回收算法执行过程内回收上述工作进程的资源引用列表中不被任何工作进程引用的资源;在垃圾回收器的执行进程与工作进程并行执行时,调用垃圾回收器使用内存回收算法在第一轮内存回收算法执行过程或第二轮内存回收算法执行过程内回收上述工作进程的资源引用列表中不被任何工作进程引用的资源。

本发明可以有效解决资源长时间无法释放的问题,避免资源被长时间占用。

上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。

以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1