基础故障处理工具
1.jdk小工具命名方式
JDK的很多小工具的名字都参考了UNIX命令的命名方式。
jps是虚拟机进程状况工具。jps名字和UNIX的ps命令类似,它的功能也和ps命令类似:
- 可以列出正在运行的虚拟机进程,
- 显示虚拟机执行主类(Main Class,main()函数所在的类)名称
- 以及这些进程的本地虚拟机唯一ID(LVMID,Local Virtual Machine Identifier)。
2.1jps命令格式
参数 |
描述 |
-q |
只输出LVMID,省略主类的名称 |
-m |
输出虚拟机进程启动时传递给主类main()函数的参数 |
-l |
输出主类的全名,如果进程执行的是jar包,则输出JAR路径 |
-v |
输出虚拟机进程启动时的JVM参数 |
jps还可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,参数hostid为RMI注册表中注册的主机名。
2.2jps执行样例
1 2 3 4 5 6 7
| jps -l
4672 sun.tools.jps.Jps 7364 org.jetbrains.jps.cmdline.Launcher 24440 C:/Program 28808 org.jetbrains.jps.cmdline.Launcher 5128
|
jstat是jdk自带的虚拟机统计信息监视工具。用于监视虚拟机各种运行状态信息的工具。它可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾手机、即时编译等运行时数据,在只提供了控制台的服务器上,它将是在软件运行期间定位虚拟机性能问题的常用工具。
3.1命令格式
1
| jstat [option vmid interval[s|ms] [count]] ]
|
对于命令格式中的VMID与LVMID需要特别说明一下:如果是本地虚拟机进程,VMID与LVMID是一致的;如果是远程虚拟机进程,那VMID的格式应当是:
1
| [protocol:][//]lvmid[@hostname[:port]/servername]
|
参数interval和count代表查询间隔和次数,如果省略这2个参数,说明只查询一次。假设需要每250毫秒查询一次进程2764垃圾收集状况,一共查询20次,那命令应当是:
jstat -gc 2764 250 20
选项option代表用户希望查询的虚拟机信息,主要分为三类:类加载、垃圾收集、运行期编译状况。详细请参考表4-2中的描述。
选项 |
作用 |
-class |
监视类加载、卸载数量、总空间以及类加载所消耗的时间 |
-gc |
监视java堆情况,包括Eden区、survivor区、老年代、永久代等的容量,已用空间,垃圾收集时间合计等信息 |
-gccapacity |
监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间 |
-gcutil |
监视内容与-gc基本相同,但输出主要关注以使用空间占总空间的百分比 |
-gccause |
监视内容与-gcutil功能一样,但是会额外输出导致上一次垃圾收集产生的原因 |
-gcnew |
监视新生代垃圾收集状况 |
-gcnewcapacity |
监视内容与-gc基本相同,但输出主要关注使用到的最大、最小空间 |
-gcold |
监视老年代垃圾收集状况 |
-gcoldcapacity |
监视内容与-gcold基本相同,但输出主要关注使用到的最大、最小空间 |
-gcmetacapacity |
输出元空间使用到的最大、最小空间 |
-compiler |
输出即时编译器编译过的方法,耗时等信息 |
-printcompilation |
输出已经被即时编译的方法 |
缩写 |
描述 |
S0C |
第一个幸存区的大小 |
S1C |
第二个幸存区的大小 |
S0U |
第一个幸存区的使用大小 |
S1U |
第二个幸存区的使用大小 |
EC |
伊甸园区的大小 |
EU |
伊甸园区的使用大小 |
OC |
老年代大小 |
OU |
老年代使用大小 |
MC |
方法区大小(元空间) |
MU |
方法区使用大小 |
CCSC |
压缩类空间大小 |
CCSU |
CCSU:压缩类空间使用大小 |
YGC |
年轻代垃圾回收次数 |
YGCT |
年轻代垃圾回收消耗时间,单位s |
FGC |
老年代垃圾回收次数 |
FGCT |
老年代垃圾回收消耗时间,单位s |
GCT |
垃圾回收消耗总时间,单位s |
3.jinfo Java配置信息工具
4.jmap java内存映像工具
5.jhat 虚拟机堆转储快照分析工具
6.jstack Java堆栈跟踪工具
基础工具总结