一、JDK下提供的工具

1、jps (JVM Process Status) 

JDK的bin目录下,用于查询LVMID(列出虚拟机进程号)

参数:

-q   只显示进程号。           

-m  输出启动时传递给主类main()函数的参数。

-l    输出主类的全名,如果进程执行的jar包,则输出jar包路径。

-v   输出虚拟机启动时JVM参数

2、jstat(JVM Statistics Monitoring Tool)虚拟机统计信息监视工具

可以显示本地或者远程虚拟机进程中类的装载、内存、垃圾收集、JIT编译等运行数据。

格式:

jstat option vmid [interval [count]]复制代码

如果查询本地,vmid为jps命令中查出来的LVMID,如果远程,则vmid为

[protocol:][//]lvmid[@localhost[:port]/servername]复制代码

interval为监控的间隔时间,count为监控的次数。

常用option:

-class 监视类装载、卸载数量、总空间、类装载所消耗的时间

-gc      监控Java堆状况,各区使用量,gc次数,gc时间等信息

-gcutil 作用通-gc,显示的数据为百分比。

-gcnew 新生代GC情况

-gcold   老年代GC情况

例子:

S0、S1:Survivor区、E Edent区、O:老年区、YGC:MinorGC次数、YGCT:MinorGC的时间、FGC:Full GC次数、FGCT:Full GC的时间、GCT:GC总时间


3、jmap(Memory Map for Java)用于生成堆转储快照(heapdump、dump文件)

除生成dump文件外,还可查询finalize执行队列、Java堆信息。

-dump       生成Java堆转存储快照,格式如下

jmap -dump:format=b,file=filename 3039
复制代码

-finalizeinfo    只能linux平台下使用,显示真正等待F-Queue中等待执行finalize方法的对象。

-heap             只能linux平台下使用,显示Java堆详细信息。

附:

-XX:HeapDumpOnOutOfMemoryError参数、让虚拟机在OOM异常时自动生成dump文件

4、jstack(Stack Trace for Java)堆栈跟踪工具

用于生成虚拟机当前时刻的线程快照(threaddump、javacore文件)

jstack [option] vmid

参数:

-F     正常输出的请求不被响应时,强制输出线程堆栈。

-l      除堆栈外,显示关于锁的附加信息。

-m    如果调用本地方法的话,可以显示C/C++的堆栈。

5、jconsole Java监视与管理控制

启动命令文件为JavaHome/bin/jconsole,可用于监控内存、cpu、线程、是否死锁等。



6、VisualVM综合处理工具

启动命令文件为 JavaHome/bin/jvisualvm