jvm性能优化工具
jdk提供给我们了很实用的工具来分析JVM的状态,线程以及配置,这些工具包含于jdk中,并且以java实现,是JVM性能优化必不可少的工具集,这些工具都在$JAVA_HOME/bin下
jps、jinfo、jstack、jmap、jstat基本使用
先说下各个命令的作用
- jps : 查看虚拟机进程工具
- jinfo:查看虚拟机配置工具,需要进程id
- jstack:虚拟机线程快照工具 ,可以用来排查死锁,或线程长时间停滞的问题
- jmap:虚拟机堆快照工具,生成dump文件,用来与MAT工具混合使用
- jstat :收集虚拟机各方面运行数据
jps(jvm process status tool)
jps [options] [hostid]
配置 | 作用 |
---|---|
-q | 忽略主类的名称,只输出pid |
-m | 输出启动类main函数的参数 |
-l | 输出主类名,如果进程执行的为jar,则输出jar路径 |
-v | 输出具体进程启动时jvm参数 |
如不指定hostid,则默认当前主机,常用方式 jps -ml | jps -lv
jinfo ( configuration info for java )
- jinfo pid : 显示jvm系统属性与vm参数信息
- jinfo -flags pid : 显示jvm vm参数信息,如最大最小堆,默认堆,垃圾收集器参数
- jinfo -sysprops pid : 显示jvm系统属性
- jinfo -flag xxx pid : 显示特定vm参数值 jinfo -flag MaxHeapSize pid 输出pid的最大堆内存
jstack ( stack trace for java )
jstack [options] pid
配置项 | 作用 |
-f |
当正常输出请求不被响应时,强制输出线程栈堆,当Java进程负载较高的时候,可以加上该参数,强制dump线程快照 |
-l | 除线程栈堆外,显示关于锁的附加信息 |
-m | 如果调用本地方法的话,可以显示c/c++的栈堆 |