JVM垃圾回收机制,GC发生在JVM哪部分,有几种GC,它们的算法是什么?
1、GC发生在堆(heap)中
2、GC的种类
①、次数上频繁收集Young区 -- Minor GC
②、次数上较少收集Old去 -- Full GC
③、基本不动Perm区
3、GC的算法
①、引用计数法 (JVM淘汰了)
只要对象之间相互引用了就不进行垃圾回收
缺点: 每次对象赋值时均维护引用计数器,且引用计数器本身也有一定的消耗;较难维护循环引用
②、复制算法 年轻代中使用的是Minor GC,这种GC算法使用的是复制算法
优点:没有标记和清除的过程,效率高 ; 没有内存碎片
缺点:需要双倍的空间
③、标记清除算法 老年代一般使用标记清除或者标记清除与标记压缩相结合的算法
优点:不需要双倍的空间
缺点:两次扫描,耗时严重;会产生内存碎片
④、标记压缩算法 老年代一般使用标记清除或者标记清除与标记压缩相结合的算法
优点:没有内存碎片
缺点:需要移动对象的成本
在整理压缩阶段,不在对标记的对象做回收,而是所有存活对象都向一端移动,然后直接清除边界以外的内存
⑤、标记清除压缩算法 多次标记清除之后进行标记压缩
优点:减少了移动对象的成本