JAVA学习笔记--JDK工具
一、JPS - JavaVirtual Machine Process Status Tool
显示指定系统内所有JAVA虚拟机进程
参数:
- -q 只输出进程ID,不显示class名称,jar文件名和传递给main方法的参数
- -m 输出传递给main方法的参数(传给main方法的参数)
- -l 输出应用程序main class的完整package名;或者应用程序的jar文件完整路径名
- -v 输出虚拟机进程启动的JVM参数
二、JSTAT - Java Virtual Machine Statistics Monitoring Tool
利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控
使用时,需加上查看进程的进程id,和所选参数
命令:jstat [-选项] [间隔毫秒] [监控次数]
参数:
- -gcutil 监视java内存状况,GC状况
- -class 监视类装载卸载数量,总空间已经类装载耗费时间
- -compiler 显示VM实时编译的数量等信息
使用示例
jstat -gcutil 25444 1000 2
S0 S1 E O P YGC YGCT FGC FGCT GCT
73.54 0.00 99.04 67.52 98.49 166 0.252 6 0.331 0.583
73.54 0.00 99.04 67.52 98.49 166 0.252 6 0.331 0.583
- S0 — Heap上的 Survivor space 0 区已使用空间的百分比
- S1 — Heap上的 Survivor space 1 区已使用空间的百分比
- E — Heap上的 Eden space 区已使用空间的百分比
- O — Heap上的 Old space 区已使用空间的百分比
- P — Perm space 区已使用空间的百分比
- YGC — 从应用程序启动到采样时发生 Young GC 的次数
- YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
- FGC — 从应用程序启动到采样时发生 Full GC 的次数
- FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
- GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
三、JINFO - Java Configuration Info
实时查看和调整虚拟机各项参数
- jinfo -v 查看虚拟机启动指定的参数列表
- jinfo -flag 查看未被显示指定的参数的系统默认值【jinfo -flag UseSerialGC 28569】
四、JMAP - Java Memory Map
一个可以输出所有内存中对象的工具
获取dump文件,查询finalize执行队列,Java堆和永久代的详细信息
参考:jmap命令详解
参数:
-dump:[live,]format=b,file=<filename> 生成堆内存快照文件; live可选[只输出活的对象到文件];
eg: $jmap –dump:live,format=b,file=myfile.bin 3772
-finalizerinfo 打印正等候回收的对象的信息(Object.finalize());
eg: $jmap -finalizerinfo 3772
-heap 显示JAVA进程堆的详细信息(垃圾收集器,参数,分代状况,内存使用量等);
eg: $jmap -heap 3772
-histo 显示JAVA进程对象统计信息(类数量,对象实例数量);
eg: $jmap -histo 3772
-permstat 以ClassLoader为口径显示永久带内存状态;
eg: $jmap -permstat 3772
五、JHAT - Java Heap Analyse Tool
用于对JAVA heap进行离线分析的工具
使用示例:
$jhat myfile.bin
JHAT内置HTTP服务器,生成dump文件的分析结果可以打开浏览器查看
六、JSTACK - Java Stack Trace
用于打印出给定的java进程服务的Java堆栈信息, 可以定位线程长时间停顿的原因,如死锁,死循环,IO等待
java.lang.Thread.getAllStackTraces()可以获取虚拟机所有线程StackTraceElement对象。
使用示例:
$jstack 3772
- 参数-l 显示线程额外的锁信息
七、JCONSOLE
基于JMX的可视化监视管理工具