日期:2014-05-20  浏览次数:20985 次

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方法