垃圾收集器-1

概述

串行收集器Serial:Serial、Serial Old

单线程收集器,jvm分配内存时,发现内存不过用,暂停应用程序,启动一个专门的垃圾回收线程来回收垃圾,回收完成后,继续执行应用程序,应用在内存比较小的嵌入式设备中

并行收集器Parallel:Parallel Scavenge、parallel Old,吞吐量

吞吐量优先的收集器

并发收集器Concurrent:CMS、G1,停顿时间,

停顿时间优先的收集器

并行VS并发

并行(Parallel):指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。适合科学计算、后台处理等弱交互场景

并发(Concurrent):指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),拉结收集线程在执行的时候不会停顿用户程序的执行。适合对响应时间有要求的场景,比如Web

停顿时间VS吞吐量

停顿时间:垃圾收集器做垃圾回收中断应用执行的时间

-XX:MaxGCPauseMillis

吞吐量:花在垃圾收集的时间和花在应用时间的占比。

-XX:GCTimeRatio=<n>,垃圾收集时间占:1/1+n

理想情况下,吞吐量很大,停顿时间很小,现实中,一般吞吐量很大,响应时间很长

串行收集器

-XX:+UseSerialGC      新生代启用串行收集器

-XX:+UseSerialOldGC   老生代启用串行收集器

并行收集器

吞吐量优先

-XX:+UseParallelGC , -XX:+UseParallelOldGC

Sever模式下的默认收集器(根据当前系统的内存和cpu情况决定是启动client模式还是启用server模式,一般情况是内存>2g,双核以上,就认为启动server模式)

检查tomcat是否使用了并行收集器


##修改配置文件

../bin/ catalina.sh

…

JAVA_OPTS="$JAVA_OPTS -XX:+UseParallelGC"

…

##重启tomcat

[root@storm-nimbus-a ~]# jps

3024 Bootstrap

##

[root@storm-nimbus-a bin]#  jinfo -flag UseParallelGC 3024

-XX:+UseParallelGC

[root@storm-nimbus-a bin]#  jinfo -flag UseParallelOldGC 3024

-XX:+UseParallelOldGC

并发收集器

响应时间优先

CMS: -XX:+UseConcMarkSweepGC –XX:+UseParNewGC

G1:-XX:+UseG1GC

检查tomcat是否使用了并发收集器


##修改配置文件

../bin/ catalina.sh

…

JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"

##重启tomcat

[root@storm-nimbus-a ~]# jps

3774 Bootstrap

##

[root@storm-nimbus-a bin]#  jinfo -flag  UseConcMarkSweepGC 3774

-XX:+UseConcMarkSweepGC

[root@storm-nimbus-a bin]# jinfo -flag UseParNewGC 3774 //设置了old区,young区默认打开     

-XX:+UseParNewGC

检查tomcat是否使用了G1


##修改配置文件

../bin/ catalina.sh

…

JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"

##重启tomcat

[root@storm-nimbus-a ~]# jps

3774 Bootstrap

##

[root@storm-nimbus-a bin]#  jinfo -flag UseG1GC  4247   

-XX:+UseG1GC

垃圾收集器搭配

 

Jdk8推荐使用G1垃圾收集器

实线是相互搭配使用

虚线是CMS回收时,如果空间分配失败,CMS就退化成SerialOld

如何选择垃圾收集器

优先调整堆的大小让服务器自己来选择

如果内存小于100M,使用串行收集器

如果是单核,并且没有停顿时间的要求,串行或者JVM自己选

如果允许停顿时间超过1秒,选择并行或者JVM自己选

如果响应时间最重要,并且不能超过1秒,使用并发收集器

GC调优指南:

https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/toc.html

 

从Ergonomics开始,每篇读3遍到5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值