码迷,mamicode.com
首页 > 其他好文 > 详细

OOM问题定位

时间:2017-03-08 21:10:58      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:异常   over   blog   div   检查   eth   执行方法   font   ace   

参考:

http://blog.itpub.net/28912557/viewspace-1455299/

 

    一:堆内存溢出

    Java创建的对象一般都是分配在堆中。我们在上一篇博文讲过,JVM的堆又分为 新生代、老年代、永久代(Java8已移除)。那么堆中出现OOM异常一般在就是因为在这几个地方内存不足导致的了。一般报错:

    Exception in thread \"main\" java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOf(Arrays.java:2760)
        at java.util.Arrays.copyOf(Arrays.java:2734)
        at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
        at java.util.ArrayList.add(ArrayList.java:351)
        at test.java.VM.OOM.HeapOOM.main(HeapOOM.java:19)

 

    二:方法区内存溢出

    方法区主要存放类的信息、静态变量、运行时常量、Field、Method信息等,当不停地有类动态创建并加载时,方法区也能产生OOM。

    报错信息:

Exception in thread \"main\" java.lang.OutOfMemoryError: PermGen space

 

   三:栈溢出

   栈的异常有两种:

   JVM在执行方法时就会创建方法栈,方法的递归、调用等使得其他方法不停地入栈,其他方法执行完毕就会弹出栈帧。当一个方法栈的深度大于JVM所允许的深度时就会报StackOverFlow;一般,出现StackOverFlow时就要检查代码是否有无穷递归的情况出现了。

    stack length:1007Exception in thread \"main\" java.lang.StackOverflowError

        at test.java.VM.OOM.JavaVMStackOF.stackLeak(JavaVMStackOF.java:13)
        at test.java.VM.OOM.JavaVMStackOF.stackLeak(JavaVMStackOF.java:14)

 

   栈空间扩展时没有足够的内存则报OutOfMemory。

   

   

OOM问题定位

标签:异常   over   blog   div   检查   eth   执行方法   font   ace   

原文地址:http://www.cnblogs.com/ygj0930/p/6522987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!