美文网首页
如何排查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