【问题标题】:What happens if I instantiate an object within its own constructor?如果我在自己的构造函数中实例化一个对象会发生什么?
【发布时间】:2014-12-29 00:36:21
【问题描述】:
//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 会发生什么变化?

【问题讨论】:

    标签: object constructor client call instantiation


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 2016-10-17
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 2011-05-20
      • 2012-08-08
      相关资源
      最近更新 更多