文章目录
1、获取内存泄漏程序的进程号
ps -ef|grep java
2、查看该进程下内存对象类全名中包含bshms的对象个数
./jmap -histo 19655 |grep bshms
3、打开java控制台(命令jconsole),连接到该进程,切到“内存”tab页,点击右上角的“执行GC”按钮进行垃圾回收
4、重复步骤2,看下对象个数,一直增加不减少,和程序内部逻辑不一样的,就是内存泄漏的。
结合sort命令,来查看:一个JVM中什么类的实例最多?一个JVM中什么类的占用的合计容量最大?
统计实例最多的类 前十位有哪些?
jmap -histo 9989 | sort -n -r -k 2 | head -10
Q:统计合计容量前十的类有哪些?
jmap -histo 121566 | sort -n -r -k 3 | head -10
jmap -histo:live 121566 | more
说明:
sort命令的部分参数含义解释如下
- -n :使用“”纯数字”进行排序(默认是以文字类型来排序)
- -r : 反向排序
- -k :以那个区间(field)来进