首页 > JVM > 一个栈溢出的demo

一个栈溢出的demo

作者:bin
  • 1.虚拟机运行时运用一种叫做栈桢的数据结构,保存上下文数据。
  • 2.每一个方法的调用都伴随这栈桢的入栈操作,相应的,方法的返回则表示栈桢的出栈操作。
  • 3.如果方法调用时,局部参数相对较多,那么栈桢中的局部变量就大,因此单个方法调用所需的栈空间也会比较多


下面是一个栈溢出的demo:

package com.zengbingo.outOfmemoryError;

public class TestJVMStack {
    private int count = 0;
    public void rescursion(long a , long b, long c){
        long d=0,e=0,f=0;
        count++;
        rescursion(a,b,c);//递归
    }

    public void testStatck(){
        try {
            rescursion(1L,2L,3L);
        } catch (Throwable e) {
            System.out.println("深度为" + count);
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        TestJVMStack testJVMStack = new TestJVMStack();
        testJVMStack.testStatck();
    }
}

输出结果

深度为5176
java.lang.StackOverflowError
	at com.zengbingo.outOfmemoryError.TestJVMStack.rescursion(TestJVMStack.java:6)

您必须 [ 登录 ] 才能发表留言!