记录线上服务内存泄漏的问题 -- 8.20
1,查看当前的Java进程Id
jps -l
Linux服务还可以通过 ps -ef | grep java
2,获取dump文件
jmap -dump:live,format=b,file=/usr/local/name.hprof <pid>
注意:<pid>
替换为你的Java进程的PID,<filename>
替换为你想要的堆转储文件名;-dump:live
选项指示jmap
仅转储存活的对象,这有助于减小堆转储文件的大小
还可以这样: jcmd <pid> GC.heap_dump <filename>.hprof
3,MAT工具的分析问题
Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation
如果电脑安装的为JDK1.8需要下载MAT1.5版本
4,设置堆外内存限制为3G
java -XX:MaxDirectMemorySize=3G -jar Hello.jar
5,在向集合里面添加元素时,如果旧的数据不再需要记得清除
private void clearList(List<String> list){
if (list != null){
//集合自己的方法
list.clear();
}
}