JDK的bin目录下有很多常用的工具,包括:
jps:显示系统中所有Hotspot虚拟机进程
jstat:收集Hotspot虚拟机各方面运行数据
jinfo:显示虚拟机的配置信息
jmap:用于生成虚拟机的内存快照信息
jhat:用于分析heapdump文件
jstack:显示虚拟机的线程栈信息
此外还有可视化工具Jconsole和VisualVM
执行示例:
$ jps -l
3733 sun.tools.jps.Jps
3700 com.leanworld.JVMTools
$ jstat -gcutil 3700 500 4
S0 S1 E O P YGC YGCT FGC FGCT GCT
50.00 0.00 60.78 0.50 12.76 214 0.049 0 0.000 0.049
0.00 25.00 20.27 0.50 12.76 215 0.049 0 0.000 0.049
0.00 25.00 70.91 0.50 12.76 215 0.049 0 0.000 0.049
50.00 0.00 20.27 0.50 12.76 216 0.049 0 0.000 0.049
$ jstack 3700
2012-01-30 16:36:05
Full thread dump Java HotSpot(TM) Server VM (17.0-b16 mixed mode):
"Attach Listener" daemon prio=10 tid=0xaca16c00 nid=0x1384 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
"Low Memory Detector" daemon prio=10 tid=0xaca00c00 nid=0x1366 runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
$jinfo 3700
Attaching to process ID 5081, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 17.0-b16
Java System Properties:
java.runtime.name = Java(TM) SE Runtime Environment
sun.boot.library.path = /home/learnworld/software/jdk1.6.0_21/jre/lib/i386
java.vm.version = 17.0-b16
java.vm.vendor = Sun Microsystems Inc.
java.vendor.url = http://java.sun.com/ ......
$ jmap -dump:format=b,file=dump.tmp 3700
Dumping heap to /home/learnworld/dump.tmp ...
Heap dump file created