new对象时由于递归形成的【
内存溢出】
Java code
public class Test04 extends Date{
//Test04 obj = new Test04();
public static void main(String[] args) {
Test04 test = new Test04();
System.out.println("内存溢出了吗");
}
}
在 main方法外面new Test04()会内存溢出,这个我懂,是形成递归了
但是而在main方法里面为什么就不会溢出,
main是程序的入口,也就是加载类的时候一定会执行的呀,我怎么感觉也形成递归了
我这样理解的(事实证明我理解错了,不知道怎么错的):
一new个Test04 新new出来的对象里就有个main方法不是吗,main方法又执行,然后再new,再执行main方法。。。
求解惑
------解决方案--------------------对象的诞生过程如下(不考虑继承):
执行属性----》执行静态代码块---》执行代码块---》执行构造方法,到处对象诞生。
对象的诞生跟main方法没有一毛钱关系……
------解决方案--------------------main方法不参与构造。
------解决方案--------------------main方法是个静态方法,即使new无数个对象,内存中也只保存了这么一个main方法
------解决方案--------------------你不调用main方法,那么它只会被vm调用一次,你new一万个对象也不会再次执行main方法