垃圾收集算法

判断对象是否存活的算法

——>根搜索算法:GC Roots Tracing

当一个对象到GC Roots没有任何引用链相连,证明对象不可用。

 

垃圾收集算法:

1. 标记-清除算法

算法:不用的标记一下,再清除

缺点:效率不高,清除完了有很多不连续的内存碎片。

 

2. 复制算法

算法:一块较大的Eden空间和两块较小的Survivor空间,回收时将eden和survivor上还没死的对象复制到另一块survivor上。

优点:实现简单,运行高效。

缺点:对象存活率较高时要执行太多的复制操作,效率会变低。

 

3. 标记-整理算法

万一对象100%存活,老年代用复制算法就不行了,所以老年代要用标记-整理算法。

算法:不用的标记一下,在清除,再把所有不用的对象向一端移动。

 

4. 分代收集算法

把Java堆分成新生代和老年代,对新生代使用复制算法,对老年代使用标记—整理。

 

3.4 垃圾收集器

3.4.1 Serial收集器

Stop the World,单线程,运行于Client模式下虚拟机很好的选择。

 

3.4.2 ParNew收集器

Serial的多线程版本,Server模式下虚拟机的首选新生代收集器。

你可能感兴趣的:(垃圾收集)