生产服务内存泄漏分析过程
https://blog.csdn.net/wangdonghello/article/details/80342035
生产报错:java.lang.OutOfMemoryError: Java heap space
堆内存泄漏一般有以下情况:
1, 堆内存本身没有设置或者配置参数设置不合适,若按默认启动,默认是256m?512m?,而服务本身复杂,不够用
2, 堆中对象死了,但是GC无法回收空间,内存泄漏
3, 服务有大对象,当有过大对象时,而此时堆空间不足,内存溢出、
还有其他情况,上面三种情况都会导致java.lang.OutOfMemoryError错误。
所以针对上述情况排查过程如下:刚开始只是通过简单的jmap,jstat,jstack等命令分别查看了当时服务的堆内存状况,YGC,FGC次数及耗时时间,当时堆栈的情况等,看完之后,没有任何头绪,所以转换思路重新生成dump文件,执行如下命令:
jmap -dump:format=b,file=jconsole.dump pid
下载的工具==》 Eclipse Memory Analyzer
生产的dump文件用专门的工具memory analyzer分析。