(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