美文网首页
JVM垃圾收集器

JVM垃圾收集器

作者: 于飞_d529 | 来源:发表于2019-01-26 11:46 被阅读14次

串行垃圾回收器

使用单线程进行垃圾回收的回收期。每次回收时,串行回收器只有一个工作线程,对于并行能力较弱的计算机来说,串行回收期的专注性和独占性有更好的性能表现,串行回收器可以在新生代和老年代使用。根据作用域不同的堆空间,分为新生代串行回收器和老年代串行回收器

-XX:+UseSerialGC 参数可以设置使用新生代串行回收器和老年代串行回收器

并行垃圾回收器

可以使用多个线程同时进行垃圾回收

  • ParNew回收器是一个工作在新生代的垃圾收集器,他只是简单的将串行回收器多线程化。他的回收策略和算法和串行回收器一样
-XX:+UseParNewGC 新生代ParNew回收器,老年代则使用串行回收器
ParNew回收器工作时的线程数量可以使用-XX:ParallelGCThreads参数制定。一般最好和计算机的CPU相当

ParalleGC

新生代ParalleIGC回收器,使用了复制算法的收集器,也是多线程独占形式的收集器,但ParalleIGC回收器有个非常重要的特点,就是它非常关注系统的吞吐量,提供了两个非常关键的参数控制系统的吞吐量

-XX:MaxGCPauseMillis:设置最大垃圾收集停顿时间,可以把虚拟机在GC的停顿的时间控制在MaxGCPauseMillis范围内,
如果系统减少GC停顿时间可以将MaxGCPauseMillis设置的很小,但是会导致GC频繁,从而增加了GC的总时间
,降低了吞吐量。所以需要根据实际情况设置该值。

-XX:GCTimeRatio:设置吞吐量大小

-XX:+UseAdaptiveSizePolicy打开自适应模式

ParalleIOldGC回收器

老年代ParalleIOldGC回收器也是一种多线程的回收器,和新生代的ParallelGC回收器一样,也是一种关注吞吐量的回收器,他使用了标记压缩算法进行实现。

-XX:+UseParallelOldGC 进行设置
-XX:+ParallelGCThreads也可以设置垃圾收集时的线程数量

CMS回收器

Concurrent Mark Sweep意为并发标记清楚,他使用的是标记清除法,主要关注系统停顿时间

-XX:+UseConcMarkSweepGC进行设置
-XX:ConcGCThreads设置并发线程数量

CMS并不是独占的回收器,也就是说CMS回收的过程中,应用程序仍然在不停的工作,又回有新的垃圾不断产生,所以在使用CMS的过程中应该确保应用程序的内存足够用,CMS不会等到应用程序饱和的时候才去回收垃圾,而是在某一阈值的时候开始回收,默认为68,也就是说当老年代的空间使用率达到68%的时候,会执行CMS回收。如果内存使用率增长的很快,在CMS执行的过程中,已经出现内存不足的情况,此时CMS回收就会失败虚拟机启动老年代串行回收器进行回收,这回导致应用程序终端,直到垃圾回收完成后才会正常工作,这个过程GC的停顿时间可能较长,所以-XX:CMSInitiationOccupancyFraction的设置要根据实际情况。

标记清除法有个缺点就是存在内存碎片的问题,那么CMS有个参数设置-XX:+UseCMSCompactAtFullCollection可以使CMS回收完成之后进行一次碎片整理,-XX:CMSFullGCsBeforeCompaction参数可以设置进行多少次回收之后,对内存进行一次压缩。

G1回收器

G1回收器是在jdk1.7以后提出的垃圾回收器。从长期目标来看是为了取代CMS回收器,G1回收器有独特的垃圾回收策略,G1属于分带垃圾回收器,区分新生代和老年代,依然有eden和from/to区,他并不要求整个eden区或者新生代、老年代的空间都连续,他使用了分区算法

-XX:+UseG1GC 应用G1收集器
-XX:MaxGCPauseMillis吸顶最大停顿时间
-XX:ParallelGCThreads 设置并行回收的线程数量

相关文章

  • G1收集器详解

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

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

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

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

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

  • Jvm之CMS垃圾收集器

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

  • GC - 收集器

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

  • JVM源码分析系列

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

  • JVM垃圾回收

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

  • JVM

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

  • JVM垃圾收集器总结

    通过上篇JVM垃圾回收算法和垃圾收集器我们对JVM的七大垃圾收集器的运行原理有了大致的了解,我们来总结一下他们之间...

  • 深入学习JVM(三) -- JVM垃圾收集-G1

    G1 (Garbage First)垃圾收集器 因为上一篇文章JVM垃圾收集器总结[https://juejin....

网友评论

      本文标题:JVM垃圾收集器

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