jps
JVM进程状态工具,用于查看进程的基本信息。JPS是Java Virtual Machine Process Status Tool的缩写,它是Java提供的一个用于查看所有Java进程的命令行工具。
-
jps: 默认情况下,不带任何参数运行jps将显示所有正在运行的Java进程的PID和主类名。
-
jps -l: 使用-l选项可以显示完整的包名和类名
-
jps -m: 使用-m选项可以显示传递给Java进程的启动参数。
-
jps -v: 使用-v选项可以显示传递给Java进程的完整命令行参数
jstat 的各种命令
jstat 是JVM统计监控工具,用于查看堆、GC(垃圾回收)等详细信息。
jstat -gc : 显示垃圾收集统计信息,包括新生代、老年代、永久代等区域的使用情况和垃圾回收次数。
以下是 jstat -gc 命令的一般用法:
jstat -gc <pid> [interval] [count]
其中, 是目标Java进程的进程ID,[interval] 是采样间隔(以毫秒为单位),[count] 是要显示的样本数量。如果不指定 [interval] 和 [count],则默认情况下会持续输出垃圾收集统计信息,直到手动停止。
例如,要查看进程ID为12345的Java虚拟机的垃圾收集统计信息,每隔1000毫秒(1秒)采样一次,共采样10次,可以运行以下命令:
jstat -gc 12345 1000 10
这将输出类似以下格式的数据:
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
0.0 512.0 0.0 0.0 4096.0 4096.0 8192.0 8192.0 1024.0 768.0 2048.0 2048.0 10 0.123 2 0.045 0.168
每一列的含义如下:
- S0C: Survivor 0区的容量(字节)
- S1C: Survivor 1区的容量(字节)
- S0U: Survivor 0区已使用的空间(字节)
- S1U: Survivor 1区已使用的空间(字节)
- EC: Eden区的容量(字节)
- EU: Eden区已使用的空间(字节)
- OC: Old区的容量(字节)
- OU: Old区已使用的空间(字节)
- MC: Metaspace区的容量(字节)
- MU: Metaspace区已使用的空间(字节)
- CCSC: Compressed Class Space区的容量(字节)
- CCSU: Compressed Class Space区已使用的空间(字节)
- YGC: 年轻代垃圾回收次数
- YGCT: 年轻代垃圾回收总耗时(秒)
- FGC: Full GC次数
- FGCT: Full GC总耗时(秒)
- GCT: 垃圾回收总耗时(秒)
jstat中的其他命令:
-
jstat -gccapacity : 显示各个内存区域的容量。
-
jstat -gcutil : 显示垃圾收集统计信息的百分比形式,更直观地展示内存区域使用情况。
-
jstat -gccause : 显示最后一次垃圾回收的原因。
-
jstat -gcnew : 显示新生代的垃圾收集统计信息。
-
jstat -gcold : 显示老年代的垃圾收集统计信息。
-
jstat -gcpermcapacity : 显示永久代的容量。
-
jstat -compiler : 显示即时编译器的编译统计信息。
-
jstat -printcompilation : 显示即时编译器的编译请求和编译耗时。
jinfo
Java配置信息工具,可以查看配置参数信息,还支持部分参数的运行时修改。
使用jinfo命令查看Java应用程序的运行时属性,可以输入以下命令,其中 pid是Java应用程序的进程ID 并输出对应名称的参数:
jinfo -flag name <pid>
jmap
Java内存映射工具,用于分析堆内存,还能够dump堆内存快照。
jmap -histo 23173
该命令将会显示进程ID为23173的Java进程的堆内存中各个对象的数量和占用的内存大小。这个命令可以帮助开发者了解当前Java进程的内存使用情况,从而找出潜在的内存泄漏或者优化内存使用。
jhat
Java堆分析工具,用于解析堆内存的dump文件。当使用jmap或其他方法生成Java的堆文件后,可以使用jhat进行分析。运行jhat命令后,它会解析堆转储文件并启动一个Web服务器,用户可以通过浏览器访问并查看堆的情况。在HTML页面上,jhat提供了多种功能,如显示所有类包括平台类、从根集能引用到的对象、显示每个类的实例数量、堆实例的分布表以及执行对象查询语句等。jhat一般与jmap搭配使用,用于分析jmap生成的堆转储快照。
jstack
Java堆栈跟踪工具,用于查看Java程序的堆栈信息,可以用来分析线程问题(如死锁)。
jstat提供了多种命令选项,可以详细查看堆内存各部分的使用量以及加载类的数量。例如,使用jstat -class可以查看类加载统计信息,包括加载类的数量、所占用的空间大小以及未加载类的数量和所占用的空间。
jstat -class 23173
#显示如下:
Loaded Bytes Unloaded Bytes Time
19595 40567.9 10 10.3 8.20
jstat -compiler则用于显示JIT编译器的编译统计信息,包括编译数量、失败数量等。
jstat还可以用于监控垃圾回收情况。例如,使用jstat -gc可以查看年轻代和老年代的垃圾回收次数、回收消耗时间以及堆内存的使用情况。通过这些统计信息,开发者可以了解JVM中垃圾回收器的行为,从而优化应用程序的性能。