2017-09-21-JAVA OOM分析方法

Java OOM

public static void main(String[] args) {
    System.out.println("Hello World!");
    List<Object> l = new ArrayList<>();
    while (true) {
        l.add(new Object());
    }
}

运行结果:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3210)
at java.util.Arrays.copyOf(Arrays.java:3181)
at java.util.ArrayList.grow(ArrayList.java:261)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
at java.util.ArrayList.add(ArrayList.java:458)

出现java的堆内存溢出的时候:会提示 “java.lang.OutOfMemoryError”,进一步提示:“Java heap space”

1,如果内存泄露:则可以通过eclipse的MAT内存分析工具,查看泄露对象的GC Roots的引用链,可以比较准确的定位出泄露代码都额位置

2,如果不存在泄露,换句话说就是对象还必须存在。那就应该检查一下一些对象的生命周期是否过长,尝试减少程序运行时候的内存消耗

以上是处理oom的简略的思路介绍

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转自Java内存溢出(OOM)异常完全指南 我的职业生涯中见过数以千计的内存溢出异常均与下文中的8种情况相关。本文...
    SunnyMore阅读 2,021评论 0 17
  • HereAndroid的内存优化是性能优化中很重要的一部分,而避免OOM又是内存优化中比较核心的一点。这是一篇关于...
    HarryXR阅读 3,871评论 1 24
  • 本文转载来源 http://www.csdn.net/article/2015-09-18/2825737/1 (...
    yoosir阅读 1,152评论 0 5
  • 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,...
    宇宙只有巴掌大阅读 2,427评论 0 12
  • 现在的工作忙得连自己都在怀疑自己的决定了,你说这些人搞得下面的人那么忙干什么,还总在鼓吹不吃饭不睡觉也要把活干完。...
    Super嘉祺暖阳阅读 214评论 0 0