请问OutOfMemoryException与StackOverFlowError有什么区别?谢谢。

解决方案 »

  1.   

    将jvm的heapsize加大一些试一试,具体请参考http://blog.chinaunix.net/u/15296/showart.php?id=82480
      

  2.   

    通常
    List list = new ArrayList();
    while (true) {
      list.add(....);
    }
    导致OOMEvoid x() {
      x();
    }
    导致SOE
      

  3.   

    OutOfMemoryException jvm占用的内存不够了StackOverFlowError   方法的stack溢出 比如不停的方法掉方法没有出口
    class A{
      A(){
       new A();
     }
     public static void main(String[] arg){
           new A();
      }
    }
      

  4.   

    OutOfMemoryException 一般是由死循环引起的
      

  5.   

    前者是内存溢出。
    后者是jvm栈溢出。
      

  6.   

    class A{
      A(){
       new A();
     }
     public static void main(String[] arg){
           new A();
      }
    }这样为什么会爆掉堆栈呢?所有new出来的对象不是放在堆中吗?我觉得应该爆掉堆啊,所以应该是OutOfMemoryException,还请高手指教。
      

  7.   

    老师和你说java heap和java stack的区别没有 ,
    说了没有
    说了没有
    说了没有
    你不听吗
    (丢一支笔)
      

  8.   

    heap 一般是对象存放区
    stack 一般是方法调用地址存放区
         比如 a.method(b.method(c.method))一共会保存3个方法调用地址
       如果方法调用死循环了 存放方法地址的stack就overflow了