StackOverflowError和OutOfMemoryError区别

来源:互联网 发布:dopdf软件 编辑:程序博客网 时间:2024/04/28 00:12

1.StackOverflowError

线程请求栈深度大于虚拟机所允许的深度,经抛出StackOverflowError异常

堆栈溢出错误一般是递归调用。下面的代码就可以出现:

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


 2.OutOfMemoryError

当虚拟机栈拓展时,无法申请到足够的内存,就会抛出OutOfMemoryError异常

内存溢出一般是出现在申请了较多的内存空间没有释放的情形。下面的代码就可以出现:

import java.util.ArrayList;import java.util.List;public class OutOfMemoryTest {    public static void main(String[] args){        List list=new ArrayList();        for(;;){            int[] tmp=new int[1000000];            list.add(tmp);        }    }}




0 0
原创粉丝点击