[admin@New-OperSys-01 ~]$ jstack $pid | grep -A 50 55e7 "GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f9ec0020000 nid=0x55e7 runnable "GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f9ec0021800 nid=0x55e8 runnable "GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f9ec0023800 nid=0x55e9 runnable "GC task thread#4 (ParallelGC)" os_prio=0 tid=0x00007f9ec0025800 nid=0x55ea runnable "GC task thread#5 (ParallelGC)" os_prio=0 tid=0x00007f9ec0027000 nid=0x55eb runnable
重点关注一下几列:
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
可以看到,除了 0x4b49 线程是正常工作线程,其它都是 gc 线程。
此时怀疑:是频繁 GC 导致的 CPU 被占满。
[admin@New-OperSys-01 ~]$ jcmd $pid GC.class_histogram |head -n 10 21986: num #instances #bytes class name ---------------------------------------------- 1: 6816409 654375264 org.apache.xmlbeans.impl.store.Xobj$AttrXobj 2: 4560939 437850144 org.apache.xmlbeans.impl.store.Xobj$ElementXobj 3: 8600125 357173616 [C 4: 8582168 205972032 java.lang.String 5: 25926 105454472 [B 6: 2301550 92062000 java.util.TreeMap$Entry
浙公网安备 33010602011771号