jvm工具
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/
- Jps
- Jstat
- Jinfo
- Jmap
- Jhat
- Jstack
- JConsole
Jps (Java process status Java)进程状态 使用频率最高的
-
- 本地虚拟机唯一id lvmid local virtual machine id
- jps -m 运行时传入主类的参数
- jps -v 虚拟机参数
- jps -l 运行的主类全名或者jar包名称
Jstat
查看类装载,内存,垃圾收集,jit编译的信息
详细信息可以参见:
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html
jstat -gcutil pid:查看某个Java进程的gc情况
S0:年轻代中一个survivor的容量(字节)
S1:年轻代中二个survivor的容量(字节)
E:年轻代中Eden的容量(字节)
O:old的的容量
M:matespace(元空间)
CCS:压缩类的空间
YGC:从应用程序启动到采样时年轻代中gc的次数
YGCT:从应用程序启动到采样时年轻代中gc的次数所用的时间(s)
FGC:从应用程序启动到采样时老年代(full gc)中gc的次数
FGCT:从应用程序启动到采样时老年代(full gc)中gc的次数所用的时间(s)
GCT:从应用程序启动到采样时gc用的总时间
Jinfo
查看java 虚拟机参数
jinfo -flag UseSerialGC pid 查看虚拟机参数的状态
查看当前jvm所用的是否是serial的gc.
Jmap
生成堆存储快照的工具
jmap -dump:format=b,file=d:\a.bin 1016
马上导出当前的Java堆存储快照信息
当设置了虚拟机的参数:-XX:+HeapDumpOnOutOfMemoryError
JVM会在遇到OutOfMemoryError时拍摄一个“堆转储快照”,并将其保存在一个文件中。
而jmap的jmap -dump的转堆存储快照的功能和上面的参数设置的实现的功能是一致的。
jmap -histo 1016 | more 查看堆中的对象信息
Jhat(jvm heap analysis tool)
java堆的分析工具(不常使用)
Jstack
生成每一个线程快照(可以根据快照分析线程是否出现了问题)
在代码中可以使用Thread.getAllStackTraces(),这个方法获取项目中所有线程的相关信息,返回的是一个map集合。
JConsole
图形化工具
VisualVM 最强大的监控工具
外部工具
https://visualvm.github/pluginscenters.html