[发明专利]基于Java虚拟机的并发垃圾收集器框架无效

专利信息
申请号: 201010595749.7 申请日: 2010-12-20
公开(公告)号: CN102023891A 公开(公告)日: 2011-04-20
发明(设计)人: 杨珉;王迪;周寻;张源;臧斌宇 申请(专利权)人: 复旦大学
主分类号: G06F9/46 分类号: G06F9/46
代理公司: 上海正旦专利代理有限公司 31200 代理人: 陆飞;盛志范
地址: 200433 *** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 java 虚拟机 并发 垃圾 收集 框架
【说明书】:

技术领域

发明属于Java虚拟机垃圾回收器技术领域,具体涉及一种基于Java虚拟机的并发垃圾回收器框架。

背景技术

伴随着高级编程语言的兴起,垃圾收集(Garbage Collection, GC)技术在系统安全和资源管理方面扮演着越来越重要的角色。

在很多编程系统中,程序编写者需要在程序编写过程中显示的释放不使用的内存空间。在这种设计中,程序编写者的失误很容易造成程序的内存泄露或者异常终止,这在很大程度上影响了系统的稳定性和可靠性。而垃圾回收技术要求虚拟机执行判断和清理程序不再使用的内存空间。所以垃圾收集技术能有效地避免这些情况的发生,它使内存的管理自动化,程序编写者不再需要对不使用的内存进行释放,垃圾收集器会在一个合适的时间对这个堆进行处理,把已经不再使用的空间释放掉。这样的设计使内存的管理更加模块化,并具有更高的可靠性。

常见的垃圾收集算法在系统堆内存耗尽时,虚拟机会“暂停”所有应用程序线程进行垃圾收集。等垃圾收集工作结束,应用程序线程会被重新启动继续其执行。这种技术被称为“停止世界(stop-the-world)”的垃圾收集。随着现代应用程序使用内存量增大、对象数量增多,“停止世界”垃圾收集所造成的停顿严重影响了应用程序的响应时间。

于是为了消除“停止世界”垃圾收集造成性能影响的问题,很多研究机构和个人都在致力于实现可以使垃圾收集器在应用程序线程执行的情况下进行垃圾收集的技术,以此来提高应用程序的效率,这样的技术被称为并发垃圾收集技术。但是目前已有的并发垃圾收集技术实现都比较分散,并且实现比较繁琐,对于不同的系统的可移植性较差也是一个比较大的问题。

发明内容

本发明的目的在于针对现有并发垃圾收集技术实现比较分散的问题,提出一个并发垃圾收集器的统一框架。

本发明调研了不同的并发垃圾收集算法的差异,发现不同的并发垃圾收集算法之间还是有很大程度的相似度,只有在具体的算法实现时有较大的差异,这样的调研结果说明了建立统一框架的可能性和优越性。

本发明采用的技术方案为:为并发垃圾收集器设计一个统一框架,可以在其中方便地实现和改进各种不同的并发垃圾收集算法。并且将垃圾收集器本身设计成多线程(GC线程),以此来提高垃圾收集的效率。

并发垃圾收集器的统一框架是专门为并发垃圾收集器所设计的一个统一框架。通过研究不同的并发垃圾收集算法的异同点,该框架提供了通用的垃圾收集数据处理和合并、垃圾收集等功能。通过该框架,并发垃圾收集器的开发者只需要实现其核心算法就可以实现一个工作良好的并发垃圾收集器,极大的方便了各种不同的并发垃圾收集算法实现和改进。并发垃圾收集器的统一框架主要分为并发算法框架和调度器两个模块。 

本发明提出的基于Java虚拟机的并发垃圾收集器框架 ,分为并发算法框架和调度器两个模块两个部分,其中,所述并发算法框架,在设计上主要通过对当前存在的并发垃圾收集算法来进行差异分析,最终划分算法中便于重用和不能重用的模块,并且针对不同的特性分别进行实现;现有的框架中又把整个并发算法框架分成核心算法实现、数据并行处理和合并、并发收集这三个模块;所述调度器主要由调度触发器、调度算法、耗尽处理三个模块组成;该调度器而言,主要有两个方面的作用:

第一,决定何时触发GC;

第二,处理系统资源耗尽的情况;按照系统资源耗尽发生的时刻段,把耗尽情况分成三种:一体发生在应用程序运行中,垃圾收集线程没有启动;发生在垃圾收集线程启动后的跟踪阶段;以及发生在垃圾收集线程启动后的收集清理阶段;调度器对这三种情况分别进行处理:

(1)对于第一种情况,只把所有的线程都停下来,做一次“停止世界”的垃圾收集过程,之后再让程序继续运行;

(2)当系统资源耗尽出现在垃圾收集线程启动后的跟踪阶段,调度器停掉其他应用程序的线程,让垃圾收集线程把跟踪阶段完成,先得到对象跟踪信息;之后用这个对象跟踪信息做一次“停止世界”的垃圾收集过程来释放内存;

(3)对于系统资源耗尽出现在垃圾收集线程启动后的收集清理阶段,调度器只停掉其他应用程序的线程,让垃圾收集线程把收集清理阶段完成。

并发垃圾收集器的最大特点就是GC线程和应用程序线程同时运行,而且无论应用程序还是垃圾收集器都可能是多线程。我们设计了一个GC线程组和应用程序线程组共享的状态变量来保证线程之间的同步。图1描述了并发垃圾收集器运行过程中线程对该状态变量进行的改变。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201010595749.7/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top