JVM垃圾回收算法

Posted ivy-xu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM垃圾回收算法相关的知识,希望对你有一定的参考价值。

垃圾回收算法:

  • 标记-清除算法
    • 标记无用对象,再进行清除回收
    • 无法清除垃圾碎片,不需要移动对象
  • 复制算法
    • 按容量划分2个相等的内存区域。当一块用完,将活着的对象复制到另一块上,再对当前使用区域清除
    • 每次只使用一个区域,内存使用率不高。对于存活率高的对象频繁复制
  • 标记-整理算法
    • 标记无用对象,让活着的对象向内存一端移动,再清除端边界外的内存。回收后,已用和未用的内存各自一边
    • 解决标记-清除算法的内存碎片问题
    • 局部移动活着的对象
  • 分代算法
    • 根据对象存活周期的不同将内存划分几块。一般是新生代和老年代,永久代
    • 新生代采用复制算法,老年代采用标记整理算法 

垃圾回收器:

技术图片

新生代:

  1. serial(复制算法):标记和清理都是单线程 
  2. parnew(复制算法):serial多线程版本
  3. parallel scavenge(复制算法):并行,高吞吐量

年老代:

  1. serial old(标记-整理算法):serial老年代版本
  2. parallel old(标记-整理算法):parallel scavenge老年代版本
  3. CMS(标记-清除算法):并行,高并发、低停顿

g1(标记-整理算法):java堆并行,jdk1.7提供。

特点:范围是java堆,包括新生代,老年代;不会产生内存碎片

这里需要注意一点:

一般情况,对象分配在新生代的Eden区,有几种情况,对象放在老年代,大对象和长期存活的对象

 

以上是关于JVM垃圾回收算法的主要内容,如果未能解决你的问题,请参考以下文章

如何修改jvm虚拟机垃圾回收器

JVM垃圾回收的“三色标记算法”实现,内容太干

JVM的垃圾回收机制 总结(垃圾收集回收算法垃圾回收器)

JVM垃圾回收算法

JVM调优之垃圾定位垃圾回收算法垃圾处理器对比

图解JVM垃圾内存回收算法