美文网首页
JVM系列——垃圾收集(三)

JVM系列——垃圾收集(三)

作者: 阿斯巴甜不太甜 | 来源:发表于2019-08-27 21:28 被阅读0次

垃圾收集器

上一篇讲的收集算法是内存回收的方法论,而垃圾收集器则是内存回收的具体实现。书中讨论的收集器基于JDK1.7之后的HotSpot虚拟机


image

如果两个收集器之间存在连线,就说明它们可以搭配使用,而虚拟机所处的区域,则表示它是属于新生代收集器还是老年代收集器。

Serial收集器

  • 单线程收集器
  • 当他进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束
  • 新生代中的Serial收集器采用的是复制算法
image

ParNew收集器

  • 实际上就为Serial收集器的多线程版本
  • 新生代的首选收集器,因为除了Serial外,只有它能与CMS配合工作
  • 第一款HotSpot中的并发收集器。
image

Parallel Scavenge收集器

CMS等收集器的关注点是尽可能地缩短垃圾收集时用户线程的停顿时间,而PS的目的则是达到一个可控制的吞吐量。所谓吞吐量就是CPU用于运行用户代码的时间与CPU总消耗时间的比值,即吞吐量=运行用户代码时间/(运行用户代码时间+运行垃圾收集时间)。如果虚拟机一共运行100分钟,垃圾收集运行了1分钟,那么吞吐量就是99%。

停顿时间越短就越适合与用户交互的程序,良好的响应速度能提升用户体验,而高吞吐量则可以高效的利用CPU时间,尽快完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。

Parallel Scavenge收集器提供了两个参数来精确控制吞吐量,分别是控制最大垃圾收集停顿时间的-XX:MaxGCPauseMillis参数以及直接设置吞吐量大小的-XX:GCTimeRatio参数。

MaxGCPauseMillis参数允许的值是一个大于0的毫秒数,收集器将尽可能在给定时间内完成垃圾收集。不过垃圾收集时间的缩短是以牺牲吞吐量和新生代空间为代价的,短的垃圾收集时间会导致更加频繁的垃圾收集行为,从而导致吞吐量的降低。

注意!!!

不要以为如果把这个参数设置小一点就能加快系统的垃圾收集速度,GC停顿时间缩短是以牺牲吞吐量和新生代空间来换取的。

比如收集300MB与收集500MB,会导致原来10秒收集一次、每次100ms变成5秒一次每次70ms,总的吞吐量还是下降。

GCTimeRatio参数的值是一个大于0且小于100的整数,也就是垃圾收集时间占总时间的比率,相当于吞吐量的倒数。如果设置为19,那允许的最大GC时间就是总时间的5%(1/(1+19))。默认是99,也就是允许最大1%的垃圾收集时间。

Serial Old收集器

就是Serial 的老年代版本,单线程,由于老年代对象的特点是周期性较长,因此采用的算法是标记—整理算法

Parallel Old收集器

Parallel Scavenge收集器的老年代版本,同样使用多线程和标记—整理算法

(未完待续)

相关文章

  • Jvm之CMS垃圾收集器

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

  • JVM系列——垃圾收集(三)

    垃圾收集器 上一篇讲的收集算法是内存回收的方法论,而垃圾收集器则是内存回收的具体实现。书中讨论的收集器基于JDK1...

  • 7种JVM垃圾收集器特点,优劣势、及使用场景

    本系列会持续更新。 今天继续JVM的垃圾回收器详解,如果说垃圾收集算法是JVM内存回收的方法论,那么垃圾收集器就是...

  • JVM源码分析系列

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

  • JVM系列——垃圾收集(二)

    垃圾收集算法 1. 标记—清除算法 标记—清除算法就和其名字一样,分为标记和清除两个阶段:首先按上一篇文章中提到的...

  • JVM系列——垃圾收集(一)

    垃圾收集 哪些内存需要回收? 什么时候回收? 怎么回收? 为什么需要了解垃圾收集呢? 当需要排查各种内存溢出、内存...

  • JVM系列——垃圾收集(四)

    CMS收集器 CMS收集器是一种获取最短回收停顿时间为目标的收集器,基于的是标记-清除算法。它的运作过程相对于去墙...

  • JVM系列——垃圾收集(五)

    内存分配与回收策略 Java的相较于C++的方便之处在于,可以自动化地解决两个问题:给对象分配内存以及回收分配给对...

  • jvm垃圾清理机制

    更多参考GC及JVM参数浅析JAVA的垃圾回收机制(GC)JVM系列三:JVM参数设置、分析jvm系列 (二) -...

  • JVM学习笔记(3)-垃圾收集算法

    JVM学习笔记(1)-内存管理机制 JVM学习笔记(2)-内存分配与回收 垃圾收集算法 JVM垃圾收集算法有四种:...

网友评论

      本文标题:JVM系列——垃圾收集(三)

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