JVM-GC参数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cdw8131197/article/details/66475793

一、堆的回顾

这里写图片描述

堆(java heap)包括新生代(Young Generation)和老年代 (old);
其中新生代包括区域(eden、s0、s1);
大多数新创建的对象在新生代产生,有两种情况回使java新创建的对象在老年代,一种是大的数组对象,且对象无外部引用;另一种是通过启动参数设置上面的新生代区域很小,使得新创建的对象大小超出新生代大小,则对象会被直接分配到老年代;
s0,s1(幸存代)是两块大小相等、功能对称的两个内存区域块,也称from和to。

二、串行收集器

特点:古老、稳定、效率高;
缺点:产生stw的时间较长;
工作:只使用一个线程进行回收,新生代和老年代均使用串行收集器,新生代使用复制算法,老年代使用标记-压缩算法;
配置: -XX:+UseSerialGC;
工作图解:
这里写图片描述

三、ParNew并行收集器

特点:只对新生代起作用,老年代依然是串行收集器;使用多线程回收;
缺点:需要多核CUP支持;
工作:多个线程进行回收,新生代使用并行收集器-复制算法,老年代使用串行收集器-标记-压缩算法;
配置: -XX:+UseParNewGC;
-XX:ParallelGCThreads 限制线程数量;
工作图解:
这里写图片描述

四、Parallel收集器

特点: 类似ParNew,更加关注吞吐量;
缺点: 需要多核CUP支持;
工作: 多个线程进行回收,新生代使用复制算法,老年代使用标记-压缩算法;
配置: -XX:+UseParallelGC 使用Parallel收集器+ 老年代串行;
-XX:+UseParallelOldGC 使用Parallel收集器+ 并行老年代;
工作图解:
这里写图片描述

五、CMS收集器

特点: Concurrent Mark Sweep 并发收集器,采用标记清除算法,尽可能降低停顿stw时间,属于老年代收集器(新生代会使用ParNew);
缺点:会产生碎片,需定期清理碎片;并发回收垃圾期间降低吞吐量(由于并发回收阶段会与应用程序抢夺CUP资源,从而降低应用程序吞吐量);清理不彻底(因为在清理阶段,用户线程还在运行,会产生新的垃圾,无法清理);因为和用户线程一起运行,不能在空间快满时再清理;如果不幸内存预留空间不够,就会引起concurrent mode failure,所以需使用串行收集器作为后备;
工作:
CMS运行过程比较复杂,着重实现了标记的过程,可分为以下四个阶段
初始标记:根可以直接关联到的对象,速度快;
并发标记:(和用户线程一起)主要标记过程,标记全部对象
重新标记:由于并发标记时,用户线程依然运行,因此在正式清理前,再做修正;
并发清除:(和用户线程一起)基于标记结果,直接清理对象
两个并发阶段—-并发标记和并发清除。非并发的初始标记阶段和重新标记阶段会产生stw,但是stw的时间很短,也非收集器主要工作过程;
配置: -XX:+UseConcMarkSweepGC (设置使用CMS收集器);
-XX:CMSInitiatingOccupancyFraction设置触发GC的阈值,若设置不可以可能产生concurrent mode failure;
由于标记-清除算法会产生碎片,所以需要设置碎片整理
-XX:+ UseCMSCompactAtFullCollection Full GC后,进行一次碎片整理,整理过程是独占的,会引起停顿时间变长;
-XX:+CMSFullGCsBeforeCompaction 设置进行几次Full GC后,进行一次碎片整理;
-XX:ParallelCMSThreads设定CMS的线程数量;
工作图解:
这里写图片描述

六、GC参数整理

-XX:+UseSerialGC:在新生代和老年代使用串行收集器
-XX:SurvivorRatio:设置eden区大小和survivior区大小的比例
-XX:NewRatio:新生代和老年代的比
-XX:+UseParNewGC:在新生代使用并行收集器
-XX:+UseParallelGC :新生代使用并行回收收集器
-XX:+UseParallelOldGC:老年代使用并行回收收集器
-XX:ParallelGCThreads:设置用于垃圾回收的线程数
-XX:+UseConcMarkSweepGC:新生代使用并行收集器,老年代使用CMS+串行收集器
-XX:ParallelCMSThreads:设定CMS的线程数量
-XX:CMSInitiatingOccupancyFraction:设置CMS收集器在老年代空间被使用多少后触发

猜你喜欢

转载自blog.csdn.net/cdw8131197/article/details/66475793