美文网首页
记一次线上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