jvm中的垃圾收集器

作者: 励志做一名老中医 | 来源:发表于2018-05-15 12:51 被阅读14次

看了几天也该做点总结了,这里简单的总结一下GC中的垃圾收集器.

1. Serial收集器:

     首先它是最老的,单线程,作用在新生代的垃圾收集器,使用的算法是  标记-清除-复制算法进行回收垃圾的.同时也是jdk的Client模式下的默认新生代垃圾收集器,他的优势是单核CPU是个合适的选择.

2. ParNew收集器:

    相当于Serial的多线程版本,同样也是作用在新生代的,使用的算法也是标记-复制算法,不同的是 他是虚拟机运行在Server模式下的默认垃圾回收器,同时也只有他与Serial能与老年代垃圾收集器CMS进行配合使用,优势是CPU核越多越好.

3. Parallel Scavenge收集器

    新生代垃圾收集器,多个垃圾回收线程并行(其余业务线程还是会被挂起),使用标记-复制算法回收垃圾,但是他确实唯一一个关注与吞吐量(GCTimeRatio)的垃圾收集器(吞吐量的意思就是:运行用户代码时间/(垃圾回收时间+用户运行代码的时间)),他的优点是 可以自动调节新生代Eden与Survivor的比例.自适应调节 是他与ParNew最大的一个区别,但是他无法与CMS进行配合.

4 .Serial Old

  Serial 老年代版本,其余的都一样.(CMS的替补队员),算法为标记整理算法

5. Paraller Old

    Paraller Scavenge老年代版本,不同的是  使用标记整理算法,他与Paarller Scavenge配合使用.

6 .CMS垃圾收集器

    历史最牛逼(暂时),对线程并发(多个垃圾收集器线程并行,业务线程同时不挂机),基于标记清楚算法,但是不同于标记清楚算法.他分为四个阶段去清理内存:

    并行标记(其余线程Stop the World,找到GC ROOTS)

    并发标记(其余线程正常走,GC针对于第一步找到的GC ROOTS进行可达性算法)

    重新标记(查漏,因为上一步起于线程还在走)

    并发清除

虽然CMS大大减少Stop the World 的时间,但是他也有明显的缺点

    1. 占用CPU资源 2.并发程序会随时产生浮动垃圾,必须预留出一部分老年代的空间.3. 因为是标记清楚 算法,所以会产生大量的空间碎片,不过CMS有参数还可以控制,开启之后会在Full GC的时候进行内存整理 ,但是整理是需要Stop the World的  所以时间上可能会多.

7.G1垃圾回收器    

    最新,跨时代的垃圾回收器.

    1. G1将垃圾回收器分为多个Region区域进行管理,但是保留分代思想,只不过物理上可能并不相连,

    2. G1给每个Region评分,排名靠前会被优先收集,收集采用标记-整理算法.

    3. 如果一个Region与另外一个Region相连,互相有引用,会吧引用信息存在Rememberd Set 中(每人一个)避免全堆扫描

    对于G1不说太多,毕竟因为暂时还没有选择他的太好的理由,CMS仍然是第一选择,不过以后G1将会是第一选择.

    写到这里,转载请标明出处!

相关文章

  • JVM垃圾收集器(三)

    接着上一篇JVM垃圾收集器(二)讲。 四、垃圾收集器 Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,...

  • G1收集器详解

    详解 JVM Garbage First(G1) 垃圾收集器 G1垃圾收集器入门

  • 5种JVM垃圾收集器特点和8种JVM内存溢出原因

    先来看看5种JVM垃圾收集器特点 一、常见垃圾收集器 现在常见的垃圾收集器有如下几种: 新生代收集器: Seria...

  • Jvm之CMS垃圾收集器

      这篇文章主要介绍JVM的CMS垃圾收集器,以及JVM提供的垃圾收集算法。 一、垃圾收集算法   JVM提供的三...

  • 2020互联网Java后端面试专题解析—JVM21题

    前言 文章对 JVM 内存区域分布、JVM 内存溢出分析、JVM 垃圾回收算法/垃圾收集器、JVM 性能调优工具及...

  • GC - 收集器

    概述 垃圾收集器是垃圾回收算法的具体实现,不同商家、不同版本的 JVM 所提供的垃圾收集器可能会有差别 收集器组合...

  • 面试官:谈谈你对G1垃圾收集器有哪些了解?

    作为一款高效的垃圾收集器,G1在JDK7中加入JVM,在JDK9中取代CMS成为了默认的垃圾收集器。 1、垃圾收集...

  • JVM垃圾回收

    JVM垃圾收集器 一、垃圾收集器的分类 1.1 Serial GC 出现的最早,比较古老,最大的特点就是垃圾收集策...

  • 03/16牛客刷题总结

    1.垃圾回收 垃圾回收在jvm中优先级相当相当低 垃圾收集器(GC)程序开发者只能推荐JVM进行回收,但何时回收,...

  • JVM

    JVM(1):Java 类的加载机制 JVM(2):JVM内存结构 JVM(3):Java GC算法 垃圾收集器 ...

网友评论

    本文标题:jvm中的垃圾收集器

    本文链接:https://www.haomeiwen.com/subject/nkpedftx.html