jps:查看虚拟机进程状况,可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,hostid为RMI注册表中注册的主机名。

格式:jps [options] [hostid]

         -q:只输出LVMID,省略主类名

-m:输出启动时main函数的参数

-l:输出主类的全名,如果进程执行的是jar包,输出jar路径

-v:输出虚拟机进程启动时JVM参数


jstat:监视虚拟机各种运行状态,显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据

格式:jstat  [option vmid [interval s|ms] [count]]

如果是本地虚拟机进程,VMID与LVMID是一致的,如果是远程的,VMID格式是:

[protocol:] [//] lvmid [@hostname [:port] /servername ]

interval表示查询间隔,count表示查询次数

jstat -gc 2764 250 20 表示每250毫秒查询一次2764进程的垃圾收集状况,一共查询20次

-class:监控类装载、卸载数量、总空间以及类装载所耗费的时间

-gc:监视java堆状况,包括eden区、两个survivor区、老年代、永久代等的容量、已用空间、GC时间等

-gccapacity:与gc检视内容一致,主要关注java堆各个区使用到的最大最小空间

-gcutil:与gx监视内容一致,主要关注已使用空间占总空间百分比

-gccause:与gcutil一致,还会输出导致上一次gc的原因

-gcnew:监视新生代gc

-gcnewcapacity:同上

-gcold:监视老年代

-gcoldcapacity:同上

-gcpermcapacity:永久代使用到的最大最小空间

-complier:输出JIT编译器编译过的方式、耗时等信息

-printcomplitation:输出已经被JIT编译的方法


jinfo:java配置信息工具,实时查看和调整虚拟机参数

jinfo -flag [name] VMID:查看参数的值

jinfo -sysprops:输出System.getProperties()的值

jinfo -flag [+/-] name:开启或关闭某些参数

jinfo -flag namevalue:设置某些参数


jmap:内存映像工具,用于生成堆转储快照

-dump :生成转储快照,格式为:-dump:[live,]format=b,file=<filename>,live子参数说明是否只dump出存活的对象

-finalizerinfo:显示在F_Queue中等待Finalize线程执行finalize方法的对象

-heap:堆信息

-histo:堆中对象统计

-permstat:以classloader为统计口径显示永久代内存

-F:对-dump没有响应时,强制生成快照


jhat:快照分析,与jmap联合使用,jhat filename后,访问7000端口即可


jstack:堆栈跟踪,当前时刻的线程快照。线程正在执行的方法的堆栈的集合,为了定位线程等待,死锁等原因。

jstack [option] VMID

-F:当正常输出的请求不被影响时,强制输出线程堆栈

-l:除堆栈信息外,显示关于锁的附加信息

-m:如果调用到本地方法时,显示c/c++堆栈