在Java的bin目录下面,我们其实可以看到很多命令行的工具,这些工具对我们监控虚拟机带来了极大的遍历。

我们可以看到下面的图就是java的/bin目录:


java 判断虚拟机是否在线 java虚拟机监控_java 判断虚拟机是否在线

1. jps 虚拟机进程状况工具

jps命令主要用于显示当前用户的进程。

1. 命令jps,则可以看到当前的用户的进程ID


  1. jsp  



java 判断虚拟机是否在线 java虚拟机监控_ci_02


2. 命令jps -q只显示进程ID,不显示其他。


  1. jps -q   



java 判断虚拟机是否在线 java虚拟机监控_应用程序_03


3. 命令jps -l 输出主类的全名


  1. jps -l  


java 判断虚拟机是否在线 java虚拟机监控_ci_04


可以清洗看到,我这边启动了一个jetty

4. 命令jps -m 显示主类main函数的参数


  1. jps -m  


java 判断虚拟机是否在线 java虚拟机监控_java 判断虚拟机是否在线_05



5. 命令jps -v  显示JVM配置的一些具体参数

2. jstat 虚拟机统计信息监控

jstat主要查看虚拟机状态。

1. jstat -gc pid  显示虚拟机GC信息


java 判断虚拟机是否在线 java虚拟机监控_java 判断虚拟机是否在线_06

2.jstat -gccapacity pid

可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小。

3. jstat -gcutil pid

统计gc信息统计

4.jstat -gcnew pid

年轻代对象的信息。

5.jstat -gcnewcapacity pid

年轻代对象的信息及其占用量。


6.jstat -gcold pid



old代对象的信息。



7.stat -gcoldcapacity pid

old代对象的信息及其占用量。



8.jstat -gcpermcapacity pid

perm对象的信息及其占用量。



9.jstat -class pid

显示加载class的数量,及所占空间等信息。


10.jstat -compiler pid

显示VM实时编译的数量等信息。



11.stat -printcompilation pid

当前VM执行的信息。

S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
PC:Perm(持久代)的容量 (字节)
PU:Perm(持久代)目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX:年轻代(young)的最大容量 (字节)
NGC:年轻代(young)中当前的容量 (字节)
OGCMN:old代中初始化(最小)的大小 (字节) 
OGCMX:old代的最大容量 (字节)
OGC:old代当前新生成的容量 (字节)
PGCMN:perm代中初始化(最小)的大小 (字节) 
PGCMX:perm代的最大容量 (字节)   
PGC:perm代当前新生成的容量 (字节)
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比
S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)
S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
TT: 持有次数限制
MTT : 最大持有次数限制

3. jinfo 打印java进程的配置信息


用法:jinfo [ option ] pid
jinfo [ option ] executable core
jinfo [ option ] [server-id@]remote-hostname-or-IP 

参数:pid   进程号
executable   产生core dump的java executable
core   core file
remote-hostname-or-IP  主机名或ip
server-id    远程主机上的debug server的唯一id

选项:no option  打印命令行参数和系统属性
-flags  打印命令行参数
-sysprops  打印系统属性
-h  帮助


java 判断虚拟机是否在线 java虚拟机监控_java_07

4. jmap 生成虚拟机的内存快照

5. jhat 用于分析heapdump文件

6. jstack 显示虚拟机的线程快照

7. Jconsole可视化控制台

打开后有可视化的Java监控界面:


java 判断虚拟机是否在线 java虚拟机监控_java_08


java 判断虚拟机是否在线 java虚拟机监控_java_09

可以看到可视化界面就可以方便的查看Java的一些内存使用情况。