SSCLI中GC垃圾回收源码分析(3) - GarbageCollectGeneration()与SuspendEE
上一节中的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启动和暂停的控制…
posted on 2009-09-14 18:39 lbq1221119 阅读(784) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步