美文网首页
如何排查OOM Java heap space

如何排查OOM Java heap space

作者: williamlee | 来源:发表于2020-12-12 15:13 被阅读0次

不喜欢看文字可以看视频:OOM

已知发生OOM了。并且是内存泄漏导致,提示可以减少大量的排查过程。
内存泄漏导致的OOM,我们直接查看堆快照文件即可。
我们看到启动参数中存在XX:+HeapDumpOnOutOfMemoryError那么当发生OOM时已经生成了,如果启动参数中没添加也没问题,执行jmap -dump:live,format=b,file=XXX.bin <pid>也可以生成堆快照文件。

  1. 打开MAT(Eclipse Memory Analyzer),打开堆快照文件。


    image.png
  1. 看下Dominator Tree. (The Dominator Tree lists the biggest objects.)

    image.png
  2. 看到第一条占用97%,就可以确定是他的问题了。继续下钻看到是个ArrayList的问题。如果熟悉代码的同学这个时候就能定位到问题了。如果不熟悉我们继续。


    image.png
  1. 看下是谁引用了这变量。操作如图:


    image.png
  1. 查看后找到变量名为OOM_REASON的ArrayList即可。
    image.png

还有其他工具和方法可以定位到这个问题。比如jhat, jvisualvm。以后有机会都会介绍的,本练习是个定位OOM比较简单的场景,后面逐渐做些复杂点的,先留个坑。

相关文章

网友评论

      本文标题:如何排查OOM Java heap space

      本文链接:https://www.haomeiwen.com/subject/idaegktx.html