如果我在自己的构造函数中实例化一个对象会发生什么?

时间:2014-11-02 03:55:13

标签: object constructor client call instantiation

//object class
public class test
{
    public test()
    {
        test t1 = new test();
    }
}

//client class in same folder
public class Client
{
    public static void main(String[] args)
    {
        test t = new test();
    }
}

这是否会产生无限的空测试对象? 当连续创建更多对象时,计算机内存空间/ RAM会发生什么事情才会被删除?

1 个答案:

答案 0 :(得分:0)

您的初步推理是正确的:您获得了“无限”数量的测试对象。每个对象都会创建一个新对象。创建的第一个对象(由main创建)的构造函数永远不会完成。

但是,Java虚拟机(JVM)对堆栈大小有限制。每次构造函数调用下一个构造函数时,都会将一个条目压入堆栈。在很短的时间内,您将获得堆栈溢出异常,您的程序将被终止。