GC的三种基本方式
1.标记清除
从根开始扫描,标记存活对象,清除不使用对象。
缺点:
当分配大量对象时,消耗时间大大超过必要值。
2.复制收集
从根开始扫描,把使用对象复制到新空间,不使用的对象清除。
缺点:
复制对象开销比较大
3.引用计数
为对象引用进行计数,变为0回收。
优点:实现容易,对象立即释放,中断时间比较短
缺点:无法释放循环引用,计数不适合进行并行运算,计数容易产生bug.
改良方式
1.分代回收
大部分对象都会在短时间内成为垃圾。
对对象进行分代,年轻对象进行小回收,可以使用标记清除或者复制收集方式。
偶尔对所有对象进行完全回收。
分代回收减少了GC的平均中断时间。不能减少最大中断时间。
2.增量回收
将GC操作分成多个部分逐一执行。
减少GC最大中断时间,但是会延长总时间。
3.并行回收
利用多线程充分发挥CPU的性能。保持原有程序运行的同时进行GC操作。