jvm内存溢出的几个例子

1.Java 堆溢出:

堆:Java中的堆是用来存储对象本身的以及数组(数组引用是存放在Java栈中的)。堆是被所有线程共享的,在JVM中只有一个堆。

public class jvm {
    public static void main(String[] args) {

        List<TestCase> cases = new ArrayList<TestCase>();

        while(true){

            cases.add(new TestCase());

        }

    }
}

2.栈内存溢出

public class StackOverFlow {
    private int a;
    public void plus(){
        a++;
        plus();
    }

    public static void main(String[] args) {
        StackOverFlow stackOverFlow = new StackOverFlow();
        try {
            stackOverFlow.plus();
        } catch (Exception e) {
            System.out.println("Exception:stack length:"+stackOverFlow.a);
            e.printStackTrace();
        } catch (Error e){
            System.out.println("Exception:stack length:"+stackOverFlow.a);
            e.printStackTrace();
        }
    }
}

3.常量池内存溢出

public class ConstantOutOfMemory {
    public static void main(String[] args) {
        try {

            List<String> strings = new ArrayList<String>();

            int i = 0;

            while(true){

                strings.add(String.valueOf(i++).intern());

            }

        } catch (Exception e) {

            e.printStackTrace();

            throw e;

        }
    }
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值