JVM 垃圾收集算法

JVM一共有四种垃圾收集算法:标记-清除算法,复制算法,标记-整理算法,分代垃圾收集算法

1、标记-清除算法

分为两个阶段:标记和清除阶段。

这个算法⾸先标记出所有还存活的对象,回收掉所有没被标记的对象

优点是:实现简单,不需要额外的空间

缺点就是:

① 回收效率低(因为两次扫描,严重浪费时间)

② 会产生大量的内存碎片,导致无法给大对象分配内存空间

 

2、复制算法

它将内存区域分为相等的两块,每次只使用其中的一块。

当正在使用的这一块区域用完了,就将还存活的对象复制到另外那块区域中,然后集中对之前使用的那块进行清理。

缺点就是:只使用了一半的内存空间,空间利用率地低

 

3、标记-整理算法

这个算法标记出所有存活的对象,然后将他们整理并移动到内存区域的一端。然后清理掉存活对象所占区域边界以外的区域

优点:不会产生碎片空间

缺点:需要移动大量对象,处理效率比较低

 

4、分代垃圾收集算法

现在的商业虚拟机一般都采用这种算法。

这个算法根据对象存活周期,将内存分为几块(新生代-老年代),不同的快采取不同收集算法。

其中的新生代又详细分为:Eden区,幸存区1(from区),幸存区2(to区).他们的比例默认为:8:1:1

新生代采用:复制算法

老年代采用:标记-清除算法 或者 标记-整理算法

posted @ 2021-05-01 15:36  CEO雷总  阅读(110)  评论(0编辑  收藏  举报