美文网首页
记一次线上OOM定位过程

记一次线上OOM定位过程

作者: 天地一蜉蝣_6e86 | 来源:发表于2020-07-29 15:00 被阅读0次

    最近线上的一个app 经常oom,为了定位这个问题首先先搞到oom 的dump 文件

    启动参数加上 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump.hprof
    然后使用mat 分析dump 文件
    然后在leak suspects 中就看到了oom 的栈


    image.png

    从栈中可以看出是StringBuilder.toString方法引起的OOM。经排查代码,发现这个业务是由java 执行linux 命令,然后记录stdout和stderr,由于stdout 太大了,导致OOM。
    因此引出一个java 常识-java 中string 长度有限制吗
    答案是:有
    编译阶段是65535
    运行时是Integer.MAX_VALUE
    原因是由于string 底层数据结构是数组,数组最大长度有限制

    相关文章

      网友评论

          本文标题:记一次线上OOM定位过程

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