理解StackOverflowError与OutOfMemoryError

来源:互联网 发布:cnc编程培训黄江 编辑:程序博客网 时间:2024/04/28 16:43

      之前对于StackOverflowError和OutOfMemoryError这2个错误一直理解得不太清楚。就专门去看了下源代码,找出了这2个异常引发的原因。就对应与了相应的例子:


     1、StackOverflowError.

     源代码解释说:抛出这个错误是因为递归太深.

1111


eg:

public class StackOverflowTest {    public static void main(String[] args){        method();    }    private static void method() {        while(true){            method();        }    }}


运行结果:

111



2、OutOfMemoryError

源代码解释说:因为内存溢出,JVM不能分配给对象的创建空间.并且GC也不能够回收足够的空间.

111

eg:

public class OutOfMemoryTest {    public static void main(String[] args){        List<Object> list = new ArrayList<Object>();        while(true){            int[] index = new int[20_0000_0000];            list.add(index);        }    }}

运行结果:

111



0 0