由于递归构造函数调用导致java堆栈溢出

时间:2014-04-05 10:18:51

标签: java

我是java编程的新手。今天这个例子是我老师用非静态方法教的。任何机构都从jvm架构的角度告诉我详细的答案

class Example {
    int x = 10;
    int y = 20;
    Example e1 = new Example();

    public static void main(String[] args){
        System.out.println("main method start");
        Example e2 = new Example();
        System.out.println("main method end");  
    }
}

1 个答案:

答案 0 :(得分:4)

类示例{

int x=10;
int y=20;

Example e1=new Example(); // this is the reason

当您在main()方法中调用新示例时,发生了什么 Example e1=new Example();正在执行中。

在示例e1 = new example();你再次创建一个Example()的新对象,它将再次调用new Example()(对新的Example()的递归调用导致StackOverflowError)。