美文网首页
GC-垃圾收集器

GC-垃圾收集器

作者: onemoremile | 来源:发表于2017-02-20 00:33 被阅读0次

HotSpot JVM支持多种垃圾收集器,垃圾收集器是按对象的分代来划分的,可以用线条连接的垃圾回收器表示两者可以配合使用。可以看到新生代垃圾收集器有Serial、ParNew、Parallel Scavenge,G1,属于老年代的垃圾收集器有CMS、Serial Old、Parallel Old和G1.其中的G1是一种既可以对新生代对象也可以对老年代对象进行回收的垃圾收集器。然而,在所有的垃圾收集器中,并没有一种普遍使用的垃圾收集器。在不同的场景下,每种垃圾收集器有各自的优势。

CMS收集器

CMS收集器(Concurrent Mark Sweep)的目标就是获取最短回收停顿时间。在注重服务器的响应速度,希望停顿时间最短,则CMS收集器是比较好的选择。

整个执行过程分为以下4个步骤:

1.初始标记

2.并发标记

3.重新标记

4.并发清除

初始标记和重新标记这两个步骤仍然需要暂停Java执行线程,初始标记只是标记GC Roots能够关联到的对象,并发标记就是执行GC Roots Tracing的过程,而重新标记就是为了修正并发标记期间因用户程序执行而导致标记发生变动使得标记错误的记录。其执行过程如下:

CMS的优点很明显:并发收集、低停顿

缺点:碎片化,可能放不下大对象,通过控制参数

-XX:+UseCMSCompactAtFullCollection,用于在CMS垃圾收集器顶不住要进行FullGC的时候开启空间碎片的合并整理过程。

G1收集器:

直到jdk7u4之后,才正式作为商用的收集器。

与前几个收集器相比,G1收集器有以下特点:

1.并行与并发

2.分代收集(仍然保留了分代的概念)

3.空间整合(整体上属于“标记-整理”算法,不会导致空间碎片)

4.可预测的停顿(比CMS更先进的地方在于能让使用者明确指定一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒

G1的工作过程如下:

a.初始标记(Initial Marking)

b.并发标记(Concurrent Marking)

c.最终标记(Final Marking)

d.筛选回收(Live Data Counting and Evacuation)

相关文章

  • GC-垃圾收集器

    HotSpot JVM支持多种垃圾收集器,垃圾收集器是按对象的分代来划分的,可以用线条连接的垃圾回收器表示两者可以...

  • GC-垃圾收集器

      垃圾回收算法: 引用计数法 复制-拷贝算法 标记-清除法 标记-整理法   主要垃圾收集器: Serial(串...

  • 垃圾收集器

    简介  垃圾收集器是垃圾收集算法的具体实现,各种垃圾收集器没有好坏之分,适合自己当前应用的垃圾收集器才是最好的垃圾...

  • JVM学习笔记之垃圾收集器【五】

    垃圾收集器 HotSpot 包含的垃圾收集器 一、串行收集器 1.1、Serial 收集器 在 JDk1.3 之前...

  • HotSpot垃圾收集器

    HotSpot虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,没有最好的垃圾收集器,只有最适合的垃圾收集器 ...

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

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

  • 垃圾收集器整理&Java8默认垃圾回收器

    垃圾收集器整理 1.Serial 垃圾收集器(单线程、复制算法) 2.ParNew 垃圾收集器(Serial+多线...

  • JVM源码分析系列

    JVM G1算法系列 G1垃圾收集器介绍 G1垃圾收集器之RSet G1垃圾收集器之SATB G1垃圾收集器之对象...

  • 常见Java垃圾收集器

    常见Java垃圾收集器参见:参考 1参考1 Java垃圾收集器

  • 四、常见垃圾收集器

    一、垃圾收集器组合图 二、垃圾收集器的发展史 单核时代 - 串行垃圾收集器 多核时代 - 小内存1)CMS是老年代...

网友评论

      本文标题:GC-垃圾收集器

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