所以我们说:一个自己的类内的对象
public class Sample { //main() class
public static void main(String[] args) {
A a = new A();
}
}
public class A {
A aa = new A();
}
所以......当我运行它......它给:java.lang.StackOverflowError的。 所以,我的解释是,在1号线该对象
a
代,进一步加强了在第2行创建对象aa
代...然后进入一个递归....它不断创建对象之后的对象,直到堆内存已满。如果是在堆上创建的对象......那么为什么它说的StackOverflowError?
如果您将堆栈设置得足够大并且堆足够小,那么当您用完堆空间时_will_会生成一个错误。 – DaoWen 2014-08-27 16:25:35
构造函数是一种方法。每个构造函数调用都会占用堆栈空间。 – 2014-08-27 16:25:58
这些对象是在堆上创建的,但是这些对象的引用是在堆栈上创建的。更多的对象=更多的引用=堆栈溢出 – ceptno 2014-08-27 16:30:47