1.先用jps命令查出java进程号
2.使用top命令查出该进程使用cpu最高、占用内存最大的线程(嫌疑最大)
top -Hp 139 -d 1 -n 1
3.使用计算器转换该线程为16进制(线程号的显示用的16进制)
139 = 0x8b
4.使用jstack命令查询该线程堆栈
5.使用jmap显示堆中对象的统计信息
jmap -histo:live 139 > test.log
less test.log
通过上述五步,基本能定位一个问题java进程卡在哪行代码,以及是什么类的实例过多(导致内存泄漏)。