java中对jvm参数的调整进行调优
Posted 健康平安的活着
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中对jvm参数的调整进行调优相关的知识,希望对你有一定的参考价值。
一 对jvm的调优
1.1 设置并行垃圾回收器
#年轻代、老年代均使用并行收集器,初始堆内存64M,最大堆内存512M
JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms64m -Xmx512m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"
1.2 分析gc日志文件
将gc.log文件上传到gceasy.io查看gc中是否存在问题。
问题1:在5次GC时,系统所消耗的时间大于用户时间,这反应出的服务器的性能存在瓶颈,调度CPU等资源所消耗的时间要长一些。
问题2:可以看出,吞吐量表现不错,但是gc时,线程的暂停时间稍有点长 。
问题3:
-
年轻代的gc有74次,次数稍有多,说明年轻代设置的大小不合适需要调整
-
FullGC有8次,说明堆内存的大小不合适,需要调整
问题4:年轻代大小设置不合理,导致了多次GC。
1.3 调整年轻代大小
JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms128m -Xmx1024m -XX:NewSize=64m -XX:MaxNewSize=256m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"
将初始堆大小设置为128m,最大为1024m,初始年轻代大小64m,年轻代最大256m
查看效果:可以看到GC次数要明显减少,说明调整是有效的。
1.4 设置G1收集器
#设置了最大停顿时间100毫秒,初始堆内存128m,最大堆内存1024m
JAVA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xms128m -Xmx1024m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"
效果:可以看到,吞吐量有所提升,评价响应时间也有所缩短。
以上是关于java中对jvm参数的调整进行调优的主要内容,如果未能解决你的问题,请参考以下文章