JVM(6)—JVM优化
JVM(6)—JVM优化
JVM优化建议
- 大多数情况JVM生产环境考虑调整:
- 初始堆和最大堆大小
- 选择什么GC收集器
- 新生代大小
 
- 要先全面监控、收集性能数据,再调优。
- 大部分都是自己写的代码出现问题,而不是JVM参数不对。
- 可以通过Arthas 进行线上问题定位处理。
JVM优化选项
- jdk1.8+优先使用G1收集器,摆脱各种选项烦恼。 -XX:+UseG1GC
- 设置初始堆和最大堆大小并且相同,减少内存交换。 -Xms2G -Xmx2G
- 评估Xmx方法:第一次起始设置大点,根据跟踪监控日志,调整为堆峰值*2-3倍即可。
- 可以设置G1最大STW时间,200~500ms区间,增加可以减少GC次数,提高吞吐量。 -XX:MaxGCPauseMillis=300
- 设置栈内存大小,一般128k或者256k就行了,每一个线程都会分配对应的栈内存。 -Xss256k
- G1一般不设置新生代大小,新生代大小是动态调整的。
java -jar -XX:+UseG1GC -Xms2G -Xmx2G -Xss256k -XX:MaxGCPauseMillis=300 test.jar
JVM监控命令
- jps:查看java进程pid。jps
- jinfo:查看jvm环境与参数。 jinfo 8100
- jstat:查看jvm内存以及GC状态。 jstat -gcutil 8100 1000 10(每隔一秒输出1次,一共输出10次)
- jstack:查看各线程调用方法堆栈。 jstack -l 8100
- jmap:生成堆dump文件。 jmap -dump:live,format=b,file=dumo.hprof 8100
- jhat:dump分析工具。 jhat dump.hprof
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号