Java虚拟机以内存监控与故障处理工具

本文内容来自《深刻理解Java虚拟机》,主要是自身学习,用于记录重点,方便回忆,复习。对应《深刻理解Java虚拟机》第四章,JDK提供的经常使用工具。java

1、JDK下提供的工具

一、jps (JVM Process Status) 

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

参数:bash

-q   只显示进程号。           函数

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

-l    输出主类的全名,若是进程执行的jar包,则输出jar包路径。学习

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

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

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

格式:3d

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

若是查询本地,vmid为jps命令中查出来的LVMID,若是远程,则vmid为code

[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总时间


三、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文件

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

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

jstack [option] vmid

参数:

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

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

-m    若是调用本地方法的话,能够显示C/C++的堆栈。

五、jconsole Java监视与管理控制

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



六、VisualVM综合处理工具

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


相关文章
相关标签/搜索