主要介绍jdk命令行工具,参考自《深入理解java虚拟机》
4.2.1 jps虚拟机进程状况工具
jps——JVM Process Status Tool:用来列出正在运行的虚拟机进程
4.2.2 jstat虚拟机统计信息监视工具
jstat——JVM Statistics Monitoring Tool:用来监视虚拟机的各种运行状态信息,具体包括类装载,内存,垃圾收集,JIT编译等运行数据,主要用来在运行期定位虚拟机性能问题。
jstat命令格式:
jstat [ option vmid [intervals [s/ms] [count] ] ]
说明:
(1)option:希望查询的虚拟机信息,如:
-class : 类装载,卸载数量,总空间,类装载耗费时间等
-gc : java堆状况,包括eden,两个survior,老年代,永久代等的容量,已用空间,GC时间合计等。
(2)vmid:进程id(可以通过jps命令或任务管理器获得)
(3)interval : 代表查询间隔,默认单位:毫秒
(4)count:查询次数
例:jstat -gc 2764就可以查看该进程的gc信息。
4.2.3 jinfo Java配置信息工具
jinfo:用来实时的查看和调整虚拟机的各项参数
命令格式:jinfo [ option ] pid
如:查询 CMSInitiatingOccupancyFraction参数值:
-flag CMSInitiatingOccupancyFraction 1444
结果:-XX:CMSInitiatingOccupancyFraction=85
修改: -flag CMSInitiatingOccupancyFraction=86 1444
注意:jinfo以及后面的jmap在windows平台下都可能会有一些限制。
4.2.4 jmap Java内存映像工具
jmap——Memory Map for Java:用于生成堆转储快照(一般称为heapdump或dump文件),以及查询finalize执行队列,Java堆和永久代的详细信息,如空间使用率,当前使用的收集器等。
命令格式: jmap [ option ] vmid
option举例:
-dump:生成java堆转储快照,格式为:-dump:[live,] format=b, file=<filename>
-finalizerinfo: 等待执行finalize方法的对象队列,windows下无效。
例:jmap -dump:format =b,file=eclipse.bin 2477
4.2.5 jhat 虚拟机堆转储快照分析工具
jhat——JVM Heap Analysis Tool:用来与jmap搭配使用,来分析jmap的堆转储快照,并将结果显示在本地浏览器中(如localhost:7000),但一般不会用jhat分析,因为(1)分析工作费时费力,一般不会直接在服务器上做,(2)有很多更直观更强大的替代工具(VisualVM,Eclipse Memory Analyzer)。
4.2.6 jstack Java堆栈跟踪工具
jstack——Stack Trace for Java: 用于生成虚拟机当前时刻的线程快照(每一条线程正在执行的方法堆栈的集合,一般称为threaddump或javacore文件)并以此来定位线程出现长时间停顿的原因,如死锁,死循环,等待外部资源等。
命令格式:jstack [ option ] vmid
option:
-F:当正常输出的请求不被响应时,强制输出线程堆栈
-l: 除堆栈外显示关于锁的附加信息
-m: 如果调用到本地方法的话,可以显示c/c++的堆栈。
网友评论