常用jvm命令

jps

jps与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号

jconsole

jconsole:一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。

jmap

打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量)。

jmap -heap pid		#显示Java堆详细信息
jmap -histo pid  	#显示堆中对象的统计信息

jmap -histo pid 结果解析:

#instance 是对象的实例个数 
#bytes 是总占用的字节数 
class name 对应的就是 Class 文件里的 class 的标识 
B 代表 byte
C 代表 char
D 代表 double
F 代表 float
I 代表 int
J 代表 long
Z 代表 boolean
前边有 [ 代表数组, [I 就相当于 int[]
对象用 [L+ 类名表示
jmap -dump:format=b,file=<file-path>  pid  #堆转储文件

示例:jmap -dump:format=b,file=/var/log/heapdump 1234
jmap -dump:live,format=b,file=heap.hprof 12345

jstat

jstat是一个极强的监视VM内存工具,可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。

jstat -class pid		查看加载class的数量,及所占空间等信息
jstat -compiler pid 	查看VM实时编译的数量等信息
jstat -gc pid			查看gc情况

S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间

jstat -gccapacity pid	查看gc中内存使用情况

NGCMN:新生代最小容量
NGCMX:新生代最大容量
NGC:当前新生代容量
S0C:第一个幸存区大小
S1C:第二个幸存区的大小
EC:伊甸园区的大小
OGCMN:老年代最小容量
OGCMX:老年代最大容量
OGC:当前老年代大小
OC:当前老年代大小
MCMN:最小元数据容量
MCMX:最大元数据容量
MC:当前元数据空间大小
CCSMN:最小压缩类空间大小
CCSMX:最大压缩类空间大小
CCSC:当前压缩类空间大小
YGC:年轻代gc次数
FGC:老年代GC次数

jstat -gcnew pid		    查看新生代信息	
jstat -gcnewcapacity pid	查看新生代内存占用情况
jstat -gcold pid		    查看老年代信息
jstat -gcoldcapacity pid	查看老年代内存占用情况
jstat -gcmetacapacity pid	查看元数据区内存占用情况
jstat -util pid				统计gc信息统计

jstack

jstack pid			查看jvm线程运行状态,是否有死锁现象等等信息
jstack -F pid 		pid无法响应时,强制打印堆栈
jstack -l pid 		打印关于锁的附加信息
jstack -m pid 		混合模式输出(包括java和本地c/c++片段)堆栈

verbose

Java -verbose[:class|gc|jni] 在输出设备上显示虚拟机运行信息
java -verbose:class
在程序运行的时候有多少类被加载!你可以用verbose:class来监视,在命令行输入java -verbose:class XXX (XXX为程序名),也可以直接在JVM启动时添加启动参数-verbose:class,你会在控制台(或者指定的启动日志文件,如catalina.out中)看到加载的类的情况。
verbose和 verbose:class 含义相同,输出虚拟机装入的类的信息,显示的信息格式如下:
[Opened D:\Java\jdk1.6.0_25\jre\lib\rt.jar]
[Loaded java.lang.Object from D:\Java\jdk1.6.0_25\jre\lib\rt.jar]

java –verbose:gcerbose:gc
在虚拟机发生内存回收时在输出设备显示信息,格式如下: [Full GC 256K->160K(124096K), 0.0042708 secs]该参数用来监视虚拟机内存回收的情况。

jjava -verbose:jniva -verbose:jni
使用-verbose:jni输出native方法调用的相关情况,一般用于诊断jni调用错误信息。
在虚拟机调用native方法时输出设备显示信息,格式如下: [Dynamic-linking native method java.lang.Object.registerNatives ... JNI] 该参数用来监视虚拟机调用本地方法的情况,在发生jni错误时可为诊断提供便利。

参考链接:

https://blog.csdn.net/wangshuminjava/article/details/80928354

https://www.cnblogs.com/lizhonghua34/p/7307139.html

http://www.cnblogs.com/ggjucheng/archive/2013/04/16/3024892.html

https://blog.csdn.net/meinanqihao/article/details/97615591

posted @ 2018-08-10 15:16  堕落门徒  阅读(320)  评论(0编辑  收藏  举报