JDK命令行监控和故障处理工具
JDK监控和故障处理工具
名称 | 主要作用 |
jps | JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。 |
jstat | JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据 |
jinfo | Configuration Info for Java,显示虚拟机配置信息 |
jmap | Memory Map for Java,生成虚拟机内存转储快照(heapdump文件) |
jhat | JVM Heap Dump Browser,用于分析heapdump文件 |
jstack | Stack Trace for Java,显示虚拟机线程快照 |
jps 虚拟机进程状况工具
列出正在运行的虚拟机进程,虚拟机执行主类(main函数所在的类)名称和这些进程的本地虚拟机唯一ID(LVMID)。
jps命令格式
jps [ options ] [ hostid ]
options | 作用 |
-q | 只输出LVMID,省略主类的名称 |
-m | 输出虚拟机进程启动时传递给主类main函数的参数 |
-l | 输出主类全名和LVMID |
-v | 输出虚拟机进程启动时JVM参数 |
jstat 虚拟机统计信息监视工具
可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、JIT编译等运行数据。
jstat命令格式
jstat [ option vmid [ interval [ s | ms ] [ count ] ] ] (参数 interval和count代表查询间隔和次数)
本地虚拟机进程的话,vmid和LVMID一致但如果是远程虚拟机进程的话,vmid的格式是
[ protocol: ] [ // ] lvmid [ @hostname[ :port ]/servername ]
option | 作用 |
-class | 监视类装载数量、卸载数量、总空间以及类装载所耗费的时间 |
-gc | 监视Java堆状况,包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息 |
-gccapacity | 监视内容与-gc基本相同,输出主要关注Java堆各个区域使用到的最大、最小空间 |
-gcutil | 监视内容与-gc基本相同,输出内容主要是已用空间占总空间的百分比 |
-gccause | 与-gcutil功能一样,额外输出上一次产生GC的原因 |
-gcnew | 监视新生代的GC状况 |
-gcnewcapacity | 监视内容与-gcnew一样,输出主要关注使用到的最大、最小空间 |
-gcold | 监视老生代的GC状况 |
-gcoldcapacity | 监视内容与-gcold一样,输出主要关注使用到的最大、最小空间 |
-gcpermcapacity | 监视永久代使用到的最大、最小空间 |
-compiler | 输出JIT编译器编译过的方法、耗时等信息 |
-printcompilation | 输出已经被JIT编译了的方法 |
jinfo jvm配置信息工具
可以实时的查看和调整虚拟机的各项参数
jinfo命令格式
jinfo [ option ] [ arg ] vmid
D:\java\jdk1.7\bin>jinfo -flag MaxTenuringThreshold 7452 -XX:MaxTenuringThreshold=15
jmap 内存映像工具
用于生成堆转储快照即dump文件
jmap命令格式
jmap [ option ] vmid
option | 作用 |
-dump | 生成Java堆转储快照,格式为:-dump:[live, ]format=b,file=<filename>;live参数说明是否只dump出存活的对象 |
-finalizerinfo | 显示在F-Queue中等待Finalizer线程执行finalize方法的对象,仅Linux平台有效 |
-heap | 显示Java堆详细信息,如使用哪种回收器,参数配置,分代状况等,仅Linux平台有效 |
-histo | 显示堆中对象统计信息,包括类,实例数量,合计容量 |
-permstat | 以ClassLoader为统计口径显示永久代内存状况,仅Linux平台有效 |
-F | 当虚拟机进程对-dump没有响应时,可使用该选项强制生成dump文件,仅Linux平台有效 |
jhat 虚拟机堆转储快照分析工具
与jmap搭配使用,用于分析dump文件,浏览器输入http://127.0.0.1:7000即可查看
jstack 堆栈跟踪工具
用于生成当前时刻的线程快照,线程快照是当前虚拟机内每一条线程正在执行的方法堆栈集合。其主要目的是定位线程出现长时间停顿的原因如线程死锁,死循环,请求外部资源等。
jstack命令格式
jstack [ option ] vmid
option | 作用 |
-F | 无响应时,强制输出线程堆栈快照 |
-l | 除堆栈快照外,额外显示关于锁的信息 |
-m | 如果调用到本地方法的话,可以显示C/C++的堆栈快照 |