//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会发生什么事情才会被删除?
答案 0 :(得分:0)
您的初步推理是正确的:您获得了“无限”数量的测试对象。每个对象都会创建一个新对象。创建的第一个对象(由main创建)的构造函数永远不会完成。
但是,Java虚拟机(JVM)对堆栈大小有限制。每次构造函数调用下一个构造函数时,都会将一个条目压入堆栈。在很短的时间内,您将获得堆栈溢出异常,您的程序将被终止。