正文
这个命令意思就是每隔2000ms输出1262的gc情况,一共输出20次
-gccapacity
同-gc,不过还会输出Java堆各区域使用到的最大、最小空间
$ jstat -gccapacity 1262
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC
614400.0 614400.0 614400.0 26112.0 24064.0 564224.0 434176.0 434176.0 434176.0 434176.0 524288.0 1048576.0 524288.0 524288.0 320 1
-
NGCMN : 新生代占用的最小空间
-
NGCMX : 新生代占用的最大空间
-
OGCMN : 老年代占用的最小空间
-
OGCMX : 老年代占用的最大空间
-
OGC:当前年老代的容量 (KB)
-
OC:当前年老代的空间 (KB)
-
PGCMN : perm占用的最小空间
-
PGCMX : perm占用的最大空间
-gcutil
同-gc,不过输出的是已使用空间占总空间的百分比
$ jstat -gcutil 28920
S0 S1 E O P YGC YGCT FGC FGCT GCT
12.45 0.00 33.85 0.00 4.44 4 0.242 0 0.000 0.242
-gccause
垃圾收集统计概述(同-gcutil),附加最近两次垃圾回收事件的原因
$ jstat -gccause 28920
S0 S1 E O P YGC YGCT FGC FGCT GCT LGCC GCC
12.45 0.00 33.85 0.00 4.44 4 0.242 0 0.000 0.242 Allocation Failure No GC
-
LGCC:最近垃圾回收的原因
-
GCC:当前垃圾回收的原因
-gcnew
统计新生代的行为
$ jstat -gcnew 28920
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
419392.0 419392.0 52231.8 0.0 6 6 209696.0 3355520.0 1172246.0 4 0.242
-gcnewcapacity
新生代与其相应的内存空间的统计
$ jstat -gcnewcapacity 28920
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
4194304.0 4194304.0 4194304.0 419392.0 419392.0 419392.0 419392.0 3355520.0 3355520.0 4 0
-
NGC:当前年轻代的容量 (KB)
-
S0CMX:最大的S0空间 (KB)
-
S0C:当前S0空间 (KB)
-
ECMX:最大eden空间 (KB)
-
EC:当前eden空间 (KB)
-gcold
统计旧生代的行为
$ jstat -gcold 28920
PC PU OC OU YGC FGC FGCT GCT
1048576.0 46561.7 6291456.0 0.0 4 0 0.000 0.242
-gcoldcapacity
统计旧生代的大小和空间
$ jstat -gcoldcapacity 28920
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
6291456.0 6291456.0 6291456.0 6291456.0 4 0 0.000 0.242
-gcpermcapacity
永生代行为统计
$ jstat -gcpermcapacity 28920
PGCMN PGCMX PGC PC YGC FGC FGCT GCT
1048576.0 2097152.0 1048576.0 1048576.0 4 0 0.000 0.242
-printcompilation
hotspot编译方法统计
$ jstat -printcompilation 28920
Compiled Size Type Method
1291 78 1 java/util/ArrayList indexOf
jmap
jmap(JVM Memory Map)命令用于生成heap dump文件,如果不使用这个命令,还阔以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候·自动生成dump文件。 jmap不仅能生成dump文件,还阔以查询finalize执行队列、Java堆和永久代的详细信息,如当前使用率、当前使用的是哪种收集器等。
命令格式
jmap [option] LVMID
option参数
-
dump : 生成堆转储快照
-
finalizerinfo : 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象
-
heap : 显示Java堆详细信息
-
histo : 显示堆中对象的统计信息
-
permstat : to print permanent generation statistics
-
F : 当-dump没有响应时,强制生成dump快照
示例
-dump
常用格式
-dump::live,format=b,file=
pid
dump堆到文件,format指定输出格式,live指明是活着的对象,file指定文件名
$ jmap -dump:live,format=b,file=dump.hprof 28920
Dumping heap to /home/xxx/dump.hprof ...
Heap dump file created
dump.hprof这个后缀是为了后续可以直接用MAT(Memory Anlysis Tool)打开。
-finalizerinfo
打印等待回收对象的信息
$ jmap -finalizerinfo 28920
Attaching to process ID 28920, please wait...
Debugger attached successfully.
Server compiler detected.