SSCLI中GC垃圾回收源码分析(3) - GarbageCollectGeneration()与SuspendEE
2009-09-14 18:22
417 查看
上一节中的GarbageCollect()方法,主要是传递不同的Generation做为参数,来调用GarbageCollectGeneration方法,实现对heap中不同的Generation进行回收。
精简了以后的GarbageCollectGeneration方法以后的代码如下:
在第一次调用该方法的时候,Gen传递过来的参数值为max_generation,表示对GC Heap中所有Generation进行垃圾回收。从上面的代码中可以看到,在对指定的代进行回收的时候,首先Suspend住了Execute Engine。然后调用对第一代Generation进行回收的方法:
gc_heap::garbage_collect(condemned_generation_number);
在这个回收的过程中,可能会产生异常失败,这里用了一个goto语句来进行重试。在完成了回收之后,重新启动Runtime EE。同时,暂停住EE也可以使在后面根据定义的一组Root来寻找live object的时候更加的安全和迅速。
这里,考虑是不是加入Execute Engine启动和暂停的控制…
精简了以后的GarbageCollectGeneration方法以后的代码如下:
在第一次调用该方法的时候,Gen传递过来的参数值为max_generation,表示对GC Heap中所有Generation进行垃圾回收。从上面的代码中可以看到,在对指定的代进行回收的时候,首先Suspend住了Execute Engine。然后调用对第一代Generation进行回收的方法:
gc_heap::garbage_collect(condemned_generation_number);
在这个回收的过程中,可能会产生异常失败,这里用了一个goto语句来进行重试。在完成了回收之后,重新启动Runtime EE。同时,暂停住EE也可以使在后面根据定义的一组Root来寻找live object的时候更加的安全和迅速。
这里,考虑是不是加入Execute Engine启动和暂停的控制…
相关文章推荐
- SSCLI中GC垃圾回收源码分析(3) - GarbageCollectGeneration()与SuspendEE
- SSCLI中GC垃圾回收源码分析(2) - GarbageCollect()与Spin Lock
- SSCLI中GC垃圾回收源码分析(2) - GarbageCollect()与Spin Lock
- SSCLI中GC源码分析(1) - EE与BCL之间的调用接口FCall
- 从JVM的内存管理角度分析Java的GC垃圾回收机制
- 从 PHP 代码分析 PHP 的 GC(垃圾回收) 机制
- GC 垃圾回收机制算法分析
- SSCLI中GC源码分析(1) - EE与BCL之间的调用接口FCall
- PHP GC(garbage ccontroller)垃圾回收机制(1)
- jvm的组成以及jvm的GC 垃圾回收算法分析
- 源码分析HotSpot GC过程(二):DefNewGeneration的GC过程
- System.GC.Collect();//垃圾回收,回收没有正常关闭的http连接
- 从PHP代码分析PHP 的GC(垃圾回收) 机制
- GC.Collect如何影响垃圾回收 推荐
- Java 虚拟机 - GC 垃圾回收机制分析
- 使用GC Portal 来分析和优化垃圾回收的性能
- tomcat_garbage_collection_log(垃圾回收日志)分析 待整理
- .NET垃圾回收机制-代(generation)的原理分析
- 源码分析HotSpot GC过程(三):TenuredGeneration的GC过程
- 垃圾回收(GC,Garbage Collection)机制