记一次内存分析

1. top 查看%CPU占用情况,查看哪个java进程占用cpu比较高
2. jps -l 确定是哪个进程

  # jps  -l  得到22243
3. ps -mp 进程号,tid,time 通过ps 查看具体哪个JVM线程,找到消耗cpu最大的线程(tid)

  # ps -mp 22243 -o THREAD,tid,time
4. 然后把上面消耗cpu最大的线程id(tid)转化为16进制,在shell中使用printf "%x\n" tid即可,我当时的线程得到的16进制id为:56ed:

  # printf "%x\n" 22253
5. 用jstack 查看具体线程栈信息:jstack [进程id] | grep [线程的16进制id] -A行数

  #jstack 22243 |grep 56ed -A30

 

 

也可以到处dump文件,到visualVM里去分析:

# jmap -dump:format=b,file=dumpfile.dat 22243

 

注: 查看gc情况:

# jstat -gcutil 22243 1000 5

posted @ 2018-12-12 11:12  君哥~  阅读(198)  评论(0编辑  收藏  举报