一、jps (Java Virtual Machine Process Status Tool)查看java进程
[root@javaxiaobang ~]# jps -l #输出jar包全名
4196 hystrixapp-0.0.1.jar
[root@javaxiaobang ~]# jps -v #启动时设置的JVM参数
4196 jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms128m -Xmx128m -XX:+UseConcMarkSweepGC
[root@javaxiaobang ~]# jps -m #输出main方法需要的参数
4196 jar --server.port=5159
二、jstat (Java Virtual Machine statistics monitoring tool)查看内存信息
root@javaxiaobang ~]# jstat -options #jvm内存监控
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation
[root@javaxiaobang ~]# jstat -class 4196 #加载的类信息
Loaded Bytes Unloaded Bytes Time
12555 22024.1 73 108.8 55.34
[root@javaxiaobang ~]# jstat -class 4196 #加载的类信息,占用多少内存,卸载类数量
Loaded Bytes Unloaded Bytes Time
12555 22024.1 73 108.8 55.34
[root@javaxiaobang ~]# jstat -compiler 4196 #运行时编译-jit编译器
Compiled Failed Invalid Time FailedType FailedMethod
13688 1 0 69.20 1 sun/misc/URLClassPath getLoader
[root@javaxiaobang ~]# jstat -gc 4196 #jvm内存信息
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
4352.0 4352.0 0.0 121.9 34944.0 6063.2 87424.0 28200.9 67840.0 64532.4 8704.0 8077.0 3861 15.146 3 0.446 15.592
[root@javaxiaobang ~]# jstat -gcutil 4196 #jvm内存信息
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 2.80 27.01 32.26 95.12 92.80 3861 15.146 3 0.446 15.592
[root@javaxiaobang ~]# jstat -gccapacity 4196 #jvm内存容量大小
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
43648.0 43648.0 43648.0 4352.0 4352.0 34944.0 87424.0 87424.0 87424.0 87424.0 0.0 1107968.0 67840.0 0.0 1048576.0 8704.0 3861 3
1、jstat -gc 进程id (查看内存信息 )
S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
2、jstat -gccapacity 进程id (jvm内存容量大小)
NGCMN:新生代最小容量
NGCMX:新生代最大容量
NGC:当前新生代容量
S0C:第一个幸存区大小
S1C:第二个幸存区的大小
EC:伊甸园区的大小
OGCMN:老年代最小容量
OGCMX:老年代最大容量
OGC:当前老年代大小
OC:当前老年代大小
MCMN:最小元数据容量
MCMX:最大元数据容量
MC:当前元数据空间大小
CCSMN:最小压缩类空间大小
CCSMX:最大压缩类空间大小
CCSC:当前压缩类空间大小
YGC:年轻代gc次数
FGC:老年代GC次数
三、jmap(Java Virtual Machine Memory Map) 虚拟机内存快照
[root@javaxiaobang ~]# jmap -heap 4196 #查看堆信息
[root@javaxiaobang ~]# jmap -dump:format=b,file=a.dump 4196 #导出内存快照
Dumping heap to /root/a.dump ...
Heap dump file created
四、jcmd命令
[root@javaxiaobang ~]# jcmd #JDK7 update4中引入了jcmd工具,它是一个多功能工具,可以用它来导出堆,查看Java进程,导出线程信息,执行GC等。
3952 clientapp-0.0.1.jar
4196 hystriapp-0.0.1.jar
[root@javaxiaobang ~]# jcmd 4196 VM.uptime #jvm内存启动多久
4196:
8174372.643 s
[root@javaxiaobang ~]# jcmd 4196 GC.class_histogram > class.txt #拿到类的统计信息
[root@javaxiaobang ~]# jcmd 4196 Thread.print > thread.dump #查看线程信息
[root@javaxiaobang ~]# jcmd 4196 GC.heap_dump `pwd`/test.dump #导出内存快照和jmap功能一样
4196:
Heap dump file created
[root@javaxiaobang ~]# jcmd 4196 VM.system_properties #jvm配置信息
[root@javaxiaobang ~]# jcmd 4196 GC.run #对jvm执行system.gc()
4196:
Command executed successfu
五、jstack命令
[root@javaxiaobang ~]# jstack -l 4196 >theadtest.dump #导出线程信息
[root@javaxiaobang ~]#
六、jinfo命令
[root@javaxiaobang ~]# jinfo 4196 >jvminfo.txt #jvm参数和系统属性
[root@javaxiaobang ~]# jinfo -flag PrintGC 4196
-XX:-PrintGC
[root@javaxiaobang ~]# jinfo -flags 4196 #输出全部参数
[root@javaxiaobang ~]# jinfo -sysprops 4196 #输出系统属性
七、jhat命令 (启动一个服务查看导出的jvm内存信息)
[root@javaxiaobang ~]# jhat -port 8763 jvm_export.dump > jhat.log &
[2] 15764
[root@javaxiaobang ~]#
http://123.56.224.5:8763/
http://123.56.224.5:8763/histo/
http://123.56.224.5:8763/oql/
备注:文中所有的4196是java进程id