项目出现heap space的分析处理记录

后台频繁出现heap space。将tomcat中-Xmx设置成了2G。但是过了几天仍然报了heap space错误。

既然增大jvm内存也无法避免频繁溢出,那么肯定是某处代码写的有问题,因此要排查一下。

首先在tomcat的catalina.sh中给JAVA_OPTIONS新增了参数-XX:+HeapDumpOnOutOfMemoryError。这样当堆溢出的时候,会转存dump文件到bin目录下。

果然重启后没多久又报heap space了。从bin目录下拿到.hprof的dump文件,然后用MemoryAnalyzer工具打开进行分析。

该工具一些常用的分析栏可以参考以下博客

https://blog.csdn.net/billxin0621/article/details/121857126

工具解析dump后,说一下排查大致思路。

1.先分析饼状图,观察是哪几个对象导致了溢出

2.分析histogram,看一下jvm中有哪些对象特别多

3.查看Leak suspect。这个分析页面会告诉你最有可能导致内存溢出的代码位置。

 

根据以上三个分析页面,首先根据1和3去排查对应的代码位置,揣摩是否存在垃圾无法回收的问题,是否存在大数据量加载的问题,是否存在死循环的问题等等。然后结合histogram中对象的数量就可以大致的知道是哪段代码导致的对象数量暴增。最后分析代码是否存在问题即可。

posted @ 2022-07-17 20:16  人菜话多帅瓜皮  阅读(160)  评论(0编辑  收藏  举报