由于嵌套的构造函数调用,我有以下代码及其抛出 StackOverflowException,并且我知道只有在构造函数成功运行时才会分配内存。
package interview;
public class StackOverflow {
int i;
StackOverflow()
{
System.out.println(" i= "+i);
System.out.println("in Constructor");
StackOverflow sOf = new StackOverflow();
sOf.i=5;
System.out.println(" i= "+i);
}
public static void main(String[] args) {
System.out.println("in main");
StackOverflow s = new StackOverflow();
s.i=10;
System.out.println(" i= "+s.i);
}
}
所以我的疑问是 'i' 的值发生了什么?它是否存储在堆栈或堆中的某个位置?在什么情况下上面的代码会抛出下面的异常?
内存不足异常