[发明专利]基于Java虚拟机的并发垃圾收集器框架无效
申请号: | 201010595749.7 | 申请日: | 2010-12-20 |
公开(公告)号: | CN102023891A | 公开(公告)日: | 2011-04-20 |
发明(设计)人: | 杨珉;王迪;周寻;张源;臧斌宇 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;盛志范 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 java 虚拟机 并发 垃圾 收集 框架 | ||
1.一种基于Java虚拟机的并发垃圾收集器框架 ,其特征在于该框架分为并发算法框架和调度器两个模块两个部分,其中,所述并发算法框架,在设计上主要通过对当前存在的并发垃圾收集算法来进行差异分析,最终划分算法中便于重用和不能重用的模块,并且针对不同的特性分别进行实现;现有的框架中又把整个并发算法框架分成核心算法实现、数据并行处理和合并、并发收集这三个模块;所述调度器主要由调度触发器、调度算法、耗尽处理三个模块组成;该调度器而言,主要有两个方面的作用:
第一,决定何时触发GC;
第二,处理系统资源耗尽的情况;按照系统资源耗尽发生的时刻段,把耗尽情况分成三种:一体发生在应用程序运行中,垃圾收集线程没有启动;发生在垃圾收集线程启动后的跟踪阶段;以及发生在垃圾收集线程启动后的收集清理阶段;调度器对这三种情况分别进行处理:
对于第一种情况,只把所有的线程都停下来,做一次“停止世界”的垃圾收集过程,之后再让程序继续运行;
当系统资源耗尽出现在垃圾收集线程启动后的跟踪阶段,调度器停掉其他应用程序的线程,让垃圾收集线程把跟踪阶段完成,先得到对象跟踪信息;之后用这个对象跟踪信息做一次“停止世界”的垃圾收集过程来释放内存;
对于系统资源耗尽出现在垃圾收集线程启动后的收集清理阶段,调度器只停掉其他应用程序的线程,让垃圾收集线程把收集清理阶段完成。
2.一种如权利要求1所述基于Java虚拟机的并发垃圾收集器框架,其特征在于,框架的各个状态之间的转换关系为:
状态①: 应用程序正常运行,每次申请内存空间的操作都会调用GC调度器来检测是否需要触发并发垃圾收集过程,需要的话转到状态②;
状态②: 应用程序线程分别停顿,收集其执行栈上的根节点,放入根节点集合,并打开当前线程的写拦截器;当最后一个线程的根节点集合收集完成后,启动GC线程开始执行追踪过程,转到状态③;
状态③: 追踪过程与应用程序并发的运行,当最后一个GC线程完成追踪过程后,转到状态④;
状态④: 追踪过程完成,当应用程序有新的申请内存操作时会触发并发的收集过程,转到状态⑤;
状态⑤: 收集过程与应用程序并发运行,当最后一个GC线程完成收集过程后转到状态①;
状态⑥: 垃圾收集过程处于状态①、③、⑤时,如果系统堆内存被应用程序耗尽,将进入状态⑥进行系统堆内存耗尽处理,随后转到状态①。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010595749.7/1.html,转载请声明来源钻瓜专利网。