JDK附带有很多命令行工具,下面先整一下监视虚拟机和故障处理的命令行。
一 jps - 虚拟机进程状况工具
jps不带参数,显示虚拟机进程ID和主类名称或jar名称;
进入命令行,敲入jps;如图;
第一次敲入时,没有java程序启动运行;只显示jsp本身的ID;
然后启动两个java程序,一个套接字示例,2个程序,一个服务器,一个客户端;
第二次敲jps,如图,显示了2个java程序的ID;
然后启动tomcat,运行一个JSP页面;该页面只是连接mysql数据库,读取一个表的数据并显示;
第三次敲入jps,又显示出了web程序的ID;
-q 参数,只显示ID;
-m参数,显示传递给主类main()函数的参数;
-l参数,输出主类的全名或者jar包的路径;
-v参数,输出虚拟机进程启动时JVM参数;
二 jstat - 虚拟机统计信息监视工具
以下输入的ID是一中用jps列出的。
1.
-class,统计classloader的行为;下例间隔200毫秒,显示5次;
2464是web程序,5044是控制台程序;由上图可见;都是小程序;web程序载入的类要多不少;
loaded是读入类的数量,bytes是字节数;
2 -gc
统计gc行为
S0C, S1C是S0、S1的容量,单位KB;C是容量,U是使用;后面的也;
YGC-young代gc的次数;YGCT,时间;FGC,full gc的次数;GCT,垃圾收集的总时间。
上图显示的情况表明,一个小的控制台程序跑起来,如果就放在那不动,它就没什么垃圾收集行为;一个小的web程序跑起来,会有一定的垃圾收集行为;
3 -gccapacity - 统计堆中代的容量,空间
头三个:年轻代的最小、最大、当前容量;其他类似;最后2个是年轻代GC次数和总GC次数
三 jinfo - 配置信息工具
-flags,列出各种VM标识;
四 jstack - 堆栈跟踪工具
先看下2464的堆栈,输入 jstack -l 2464 后显示堆栈,很长;这是web程序的; 下面是其中的两页;
下面是5044的堆栈,控制台程序的,没那么长;下面是其中的两页;