JVM相关

博客介绍了Java JVM的收集器,如Serial、ParNew、CMS、G1等,还列举了CMS和G1的相关参数,以及LOG、JSTAT、DUMP的使用方法。给出了性能参考指标,明确JVM调优目标是让GC时间小、次数少、Full GC周期长,并阐述了JVM调优的原则。

收集器

Serial收集器(单线程,基本不用)

ParNew收集器(多与CMS配合使用)

CMS(Concurrent Mark Sweep)收集器

G1(Garbage First)收集器

CMS

-XX:+UseConcMarkSweepGC
-XX:UseParNewGC
-XX:CMSInitiatingOccupancyFraction
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction
-XX:+CMSClassUnloadingEnabled
-Xms
-Xmx
-Xmn
-Xss
-XX:MetaspaceSize
-XX:MaxMetaspaceSize

G1

-XX:G1HeapRegionSiz
-XX:MaxGCPauseMillis
-XX:G1NewSizePercent
-XX:G1MaxNewSizePercent
-XX:ParallelGCThreads
-XX:ConcGCThreads
-XX:+UseG1GC

LOG

-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCApplicationStoppedTime
-Xloggc:<filename>

JSTAT

jstat -gcutil <PID> <MS> <TIMES>

DUMP

jmap -dump:format=b,file=dumpFileName.hprof PID
jmap -dump:live,format=b,file=dumpFileName.hprof PID
查看gc日志
通过MAT工具进行分析

性能参考

Minor GC执行时间(小于50ms)
Minor GC执行不频繁(大概10秒一次)
Full GC执行时间(小于1s)
Full GC执行不频繁(10分钟一次)

目标

GC的时间足够的小

· GC的次数足够的少
· 发生Full GC的周期足够的长

JVM调优的原则

· 多数的Java应用不需要在服务器上进行GC优化;
· 多数导致GC问题的Java应用,都不是因为我们参数设置错误,而是代码问题;
· 在应用上线之前,先考虑将机器的JVM参数设置到最优(最适合);
· 减少创建对象的数量;
· 减少使用全局变量和大对象;
· GC优化是到最后不得已才采用的手段;
· 在实际使用中,分析GC情况优化代码比优化GC参数要多得多;

 

转载于:https://www.cnblogs.com/liehen2046/p/11053175.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值