JVM的监控工具很多,而且原本很多随着JDK一起发布的工具也有些已经单独维护了,同时在互联网上还有一些在线的分析工具,选择一款适合于自己的就可以了,在阿里之中推出一个Arthas工具。
jstat(全称“Java Virtual Machine statistics monitoring tool”)是一个JDK自带的轻量级MM监控工具,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了堆内存的大小和垃圾回收状况的监控,在jstat命令中提供了大量的可用监控项,开发者直接通过 jstat -options 命令,即可查看当前支持的监控选项。
-class:显示加载类的数量以及所占用的空间信息
-compiler:显示JVM实时编译器(JIT)的数量
-gc:显示当前JVM中的GC信息,例如GC的次数以及时间
-gccapacity:显示JVM堆内存中的分代中的对象使用和占用大小
-gccause:监控JVM堆内存中使用信息以及上一次GC产生的原因
-gcmetacapacity:查看元空间的内存容量
-gcnew:新生代堆内存统计
-gcnewcapacity:查看新生代的内存容量
-gcold:老年代堆内存统计
-gcoldcapacity:查看老年代的内存容量
-gcutil:统计GC信息
-printcompilation:查看当前JVM的执行信息
如果要使用上述这些命令进行操作,那么有一个前提条件就是一定要获取当前JVM运行的进程ID。为了解决获取Java进程的设计问题,在JDK的内部提供有了一个jps的命令,这个命令可以获取当前全部运行的JVM进程信息。
1、jstat –class
该命令表示显示加载class的数量,及所占空间等信息。
jstat -class 进程ID
其输出信息各个参数(按照输出顺序排序)的说明: