CPU使用率过高问题定位

(1)top 命令 -》查询出CPU使用率最高的 PID编号。

(2)top -H p PID编号 -》能查询出所有线程的CPU使用率的列表(线程编号也在PID列)。

(3)jstack xxxx(进程编号) -》列出当前进程所有线程的堆栈情况。

(4)将之前的线程编号转成16进制准确查找到指定线程,查看对应的堆栈即可。

 

jstat -gcutil pid 1s 命令,查询JVM进程GC情况,发现Full GC短期大量执行,且无法回收年老代内存空间。

jmap -histo pid > histo.txt命令,打印JVM进程中每个class的实例数目,内存占用,类全名信息,如下:

  • 正常情况刚Yong GC完时的内存占用
   1:        457482       35,387,296  [C
   2:         16678       13,773,280  [I
   3:         63772        9,237,488  [B
   4:        122,459        7,837,376  java.nio.DirectByteBuffer
   5:         53,091        7,193,480  [Ljava.lang.Object;
   6:         90076        6485472  io.netty.channel.DefaultChannelHandlerContext
   7:         59706        4298832  io.netty.buffer.UnpooledUnsafeDirectByteBuf
   8:        122777        3928864  java.util.HashMap$Node
   9:        120320        2887680  java.lang.String
  10:         43714        2447984  io.netty.buffer.UnpooledHeapByteBuf
  Total       2360002      138,412,016
posted @ 2019-12-07 09:24  soft.push("zzq")  Views(355)  Comments(0)    收藏  举报