[发明专利]一种工作于混合模式执行引擎中的垃圾收集方法有效
申请号: | 201110227839.5 | 申请日: | 2011-08-10 |
公开(公告)号: | CN102411513A | 公开(公告)日: | 2012-04-11 |
发明(设计)人: | 杨珉;张源;彭智俊 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;盛志范 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明属于Java编译运行环境设计技术领域,具体为一种工作于混合模式执行引擎中的垃圾收集方法。本发明中的垃圾收集方法采用经典的标记--清扫垃圾回收算法,整个垃圾回收过程分为如下三个阶段:线程挂起,扫描栈帧、建立根集合,采用标记--清扫算法进行垃圾对象的回收;其中,标记-清扫算法为两个阶段,分别为标记阶段和清扫阶段;当垃圾收集器完成垃圾回收后,将把所有线程上的垃圾回收标志位清零,使原先被挂起的线程得以继续运行,至此,完成一次完整的垃圾收集过程。本发明根据不同执行引擎异常处理特点,实现了Java虚拟机采用动态编译和解释器模式混合执行模式下的垃圾高效回收。 | ||
搜索关键词: | 一种 工作 混合 模式 执行 引擎 中的 垃圾 收集 方法 | ||
【主权项】:
一种工作于混合模式执行引擎中的垃圾收集方法,其特征在于整个垃圾回收过程分为如下三个阶段:一、线程挂起在垃圾收集开始时,要求其他的线程都应处于挂起状态,垃圾收集器开始垃圾回收操作,待完成之后通知被挂起的线程结束挂起操作,恢复运行;当垃圾收集器将线程挂起时,将待挂起线程中的挂起请求数的值加1,当每个线程在解释模式运行时,在挂起点时进行检查,去检查当前线程是否需要被挂起;挂起点主要出现在发生如下几处逻辑之时:1)异常处理;2)向后跳转;3)函数调用及返回;此时若发现自身的挂起请求数不为零,则将自身挂起,直到挂起请求数变为零后才会恢复运行;垃圾收集器在“通知”每个线程应当挂起后,逐一去检查这些线程,看其是否已处于挂起状态;若不然,则一直等待,直至对方挂起;若在等待并尝试若干次后,发现该线程仍处于运行状态,则尝试提高此线程的优先级,使其能尽早碰触到检查点;若尝试次数超过某一固定阈值时,则垃圾收集器的挂起等待失败,整个Java虚拟机也将中止退出;二、扫描栈帧,建立根集合在混合执行引擎模式下,在扫描遍历建立根集合时,除了要扫描考虑Java函数栈帧之外,还扫描动态编译生成的代码运行时的本地函数栈帧;同时由于动态编译生成函数将部分参数放在物理寄存器内,故根集合的建立还需要扫描物理寄存器;当进入混合模式下的动态编译执行模式时,扫描动态编译生成的代码运行时的本地函数栈帧,同时由于动态编译生成函数将部分参数放在物理寄存器内,故根集合的建立还需要扫描物理寄存器;所以在每条线程中,存放一个数据结构用来记录当前本地栈最顶层的动态编译生成函数的物理寄存器的值;最终在混合模式执行模式下,执行引擎需要扫描部分主要分为:(1)Java函数栈帧;(2)动态编译生成栈帧;(3)物理寄存器;根据函数在不同执行引擎执行之前的调用关系,垃圾收集器在实现的具体策略上也有不同;在混合模式下,函数调用情况分为如下几种情况:1)从解释器中调用动态编译生成函数负责这个调用的函数调用桥从线程相应的数据结构中将原本记录下的物理寄存器值取出,压到本地栈上进行保存;2)从本地代码中调用动态编译生成函数如同情况1)一样进行相应的保存操作;3)从动态编译生成函数中调用解释器代码在Java栈上分配一个中断栈帧,将当前动态编译生成函数的信息写到当前线程中的相应的数据结构中,进行保存;4)解释器中调用本地函数不需要做任何附加操作,其处理逻辑同原先解释模式下一致;5)本地函数调用解释器执行不需要做任何附加操作,其处理逻辑同原先解释模式下一致;在建立了完备的根集合后,接下来从根集合进行扫描,用相应的垃圾收集算法进行垃圾回收;三、采用标记‑‑清扫算法进行垃圾对象的回收 标记‑清扫算法为两个阶段,分别为标记阶段和清扫阶段;在标记阶段中,垃圾收集器将从根集合开始,逐个标记被引用的对象,放入一特定的集合中,直至该集合最终不再增大,至此标记过程完成;在清扫过程中,垃圾收集器将扫描所有的对象,未被标记的对象,将被垃圾回收器回收释放,至此清扫过程完成。当垃圾收集器完成垃圾回收后,将把所有线程上的垃圾回收标志位清零,使原先被挂起的线程得以继续运行,至此,完成一次完整的垃圾收集过程。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201110227839.5/,转载请声明来源钻瓜专利网。