代码改变世界

随笔档案-2013年6月19日

每天学习一点.net(6) GC的原理 两步回收、代。

2013-06-19 23:30 by 黑眼圈Mars, 272 阅读, 收藏,
摘要: 今天仔细看了GC的一章。总结一下,整个GC的回收过程可以分为两步和三代。两步是指 1 标记(marking) GC遍历所有线程栈,标记所有线程栈中的根(指向堆元素,类、数组等等)。2 遍历堆中所有未被标记的对象,然后进行碎片整理(compact)。三代是指 0代、1代、2代。一次垃圾回收后,0代中不包含任何对象,对象要么被回收,要么进入1代。只有1代满了以后,才会进入2代。2代对象,至少经过了两次垃圾回收得检查。进行2代回收时,必定进行0代和1代回收。进行1代回收时,必定进行0代回收。一般大对象(>=84000bytes)的回收是在2代回收中进行的。 阅读全文