一.命令篇
JDK提供以下命令排查JVM问题:
都是针对进程而言:
-
jps:JVM Process Status Tool,显示系统内所有的JVM进程;
-
jstat:JVM Statistics Monitoring Tool,可以收集JVM相关的运行数据;
-
jmap:Memory Map for Java,用于生成JVM的内存快照;
-
jstack:Stack Trace for Java,显示JVM的线程快照。
-
jhat:JVM Heap Dump Browser,用于分析heapdump文件,它可以建立一个http/html服务,使用者可以在浏览器上查看分析结果
1.jps
列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一id(Local Virtual Machine Identifier,简称LVMID)
-q
只输出LVMID,省略主类名称;
-m
输出虚拟机进程启动时传给主类函数的参数;
-v
输出虚拟机启动时的JVM参数
2.jstat
(“Java Virtual Machine statistics monitoring tool”)
用于监控虚拟机运行状态信息。它可以显示本地或者远程虚拟机进程的内存、垃圾收集、JIT编译等运行数据。
-class
监视类的装载/卸载数量、总空间以及类装载所耗时间;
-gc
监视java heap情况,包括eden区和两个survivor区、old区、永久区等的容量,已用空间和GC时间等信息;
S0C:young区中的第一个survivor区的大小;
S1C:young区中的第二个survivor区的大小;
S0U:young区中的第一个survivor区目前已使用空间;
S1U:young区中的第二个survivor区目前已使用空间;
EC:young区中的eden区的大小;
EU:young区中的eden区目前已使用空间;
OC:old区的大小;
OU:old区目前已使用空间;
MC:元数据区大小;
MU:元数据区使用大小;
CCSC:压缩类空间大小;
CCSU:压缩类空间使用大小;
YGC:young gc次数;
YGCT:young gc消耗时间;
FGC: