StackOverflowError OutOfMemoryError

一般有这几种异常:

  • java.long.StackOverflowError

    与栈(stack)相关,因为每个方法都会有一个栈帧,递归调用时容易出现这种异常。

    public static void main(String[] args) {

        int n=10;
        add(n);
    }

    public static void  add(int n){
        add(n-1);   
    }
    //Exception in thread "main" java.lang.StackOverflowError

在调用方法时要注意确保方法调用的结束,不能无限循环调用

- java.long.OutOfMemoryError

比较常见的java.lang.OutOfMemoryError:heap spacejava.lang.OutOfMemoryError: PermGen space

1, java.lang.OutOfMemoryError: PermGen space
是说 JVM 里的方法区的异常溢出,由于JVM在默认的情况下,Perm默认为64M,而很多程序需要大量的Perm区内存,导致OutOfMemoryError: PermGen space异常。
解决方法,增大JVM的 -XX:MaxPermSize 启动参数

2, java.lang.OutOfMemoryError:heap space 其它 OutOfMemoryError
而这个异常是因为 JVM堆内存或者说总体分少了。
解决方法,更改 -Xms -Xmx 启动参数

public class Errors {

    public static void main(String[] args) {

        Vector<BigObject> vector = new Vector<BigObject>();     
        while(true){
            vector.add(new BigObject());
        }

    }

}
class BigObject{
    int n=10;
    public void test(){
        n=20;
    }
}
//Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

参考:http://stackoverflow.com/questions/11435613/whats-the-difference-between-stackoverflowerror-and-outofmemoryerror
http://blog.youkuaiyun.com/chaofanwei/article/details/19483101
http://blog.youkuaiyun.com/roland101/article/details/2197444

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值