美文网首页
OOM问题排查

OOM问题排查

作者: 莫失莫忘X3 | 来源:发表于2020-10-22 15:40 被阅读0次

    JVM参数设置

    在JAVA_OPTIONS变量中增加参数

    -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${目录}
    

    说明:

    • -XX:+HeapDumpOnOutOfMemoryError

    当JVM发生OOM时,自动生成DUMP文件

    • -XX:HeapDumpPath= ${目录}

    存放DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。如果不指定文件名,默认为:java_<pid><date><time>.hprof

    所以在jvm启动参数加上以上配置是为了在项目发生oom时,输出堆的内存快照,用于后续分析定位

    hprof文件分析

    hprof文件需要用内存分析工具分析,如mat、jdk自带的jvisualvm.exe
    本人习惯用mat工具 mat下载

    • 载入hprof文件


      image.png
    • Histogram
      可以右键某一项查看类实例并通过Path to GC Roots快速找到某个对象的 GC Root


      image.png
    • Leak Suspects
      通过分析线程堆栈信息,可以很好定位内存泄漏的位置


      image.png
    • Dominator Tree
      以实例对象的维度展示当前堆内存中Retained Heap占用最大的对象,以及依赖这些对象存活的对象的树状结构


      image.png
    • Thread Overview
      可以查看线程对象/线程栈信息、线程名、Shallow Heap、Retained Heap、类加载器、是否Daemon线程等信息


      image.png
      image.png

    相关文章

      网友评论

          本文标题:OOM问题排查

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