所以我們說:一個自己的類內的對象
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