JVM | 性能调优
JVM | 性能调优
一、性能调优工具
1. jps
jps: 用来查看java进程pid的命令- 用法:
jps [-q] [-mlvV] [<hostid>]-q: 只显示pid-m: 输出main method的参数-l: 显示类的全限定名-v: 显示虚拟机启动参数-V: 显示通过配置文件设定的jvm参数(.hotspotrc文件或-XX:Flags=所指定的文件)hostid: 主机地址eg: jps localhost
- 示例:
jps -mlv localhost列出localhost上运行的jvm,展示程序输入参数,类的全限定名,虚拟机启动参数
2. jstack(查看线程)
- jstack :用于显示指定进程内线程的信息
- 用法:
jstack [option] pid- option:
-F: 强制线程dump,在线程挂起的时候用-m: 同时输出java和native-l: long listing
- option:
- jstack日志分析
3. jmap(查看内存)
4. jstat(性能分析)
jstat: 查看堆内存各部分的使用量,以及加载类的数量- 用法:
jstat <option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
5. jconsole
6. jvisualvm
7. Arthas
二、参数配置
1. 生产环境打印GC停顿时间
-XX:+printGCApplicationStoppedTime
如果停顿时间过长,需要考虑代码是不是有大的循环, 无法进入安全点导致GC停顿时间过长问题
Total time for which application threads were stopped: 0.0000306 seconds, Stopping threads took: 0.0000070 seconds2. 生产环境禁止RMI(remote method invoke)调用System.gc();
-XX:+DisableExplictGC: 失效直接调用的gc
3. 生产环境真实配置案例
-Dresin.home=$SERVER_ROOT
-server
-Xmx3000M
-Xms3000M
-Xmn600M
-XX:PermSize=500M
-XX:MaxPermSize=500M
-Xss256K
-XX:+DisableExplicitGC
-XX:SurvivorRatio=1
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=0
-XX:+CMSClassUnloadingEnabled
-XX:LargePageSizeInBytes=128M
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70
-XX:SoftRefLRUPolicyMSPerMB=0
-XX:+PrintClassHistogram
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC
-Xloggc:log/gc.log
浙公网安备 33010602011771号