当前位置: 代码迷 >> J2SE >> new对象时因为递归形成的【内存溢出】
  详细解决方案

new对象时因为递归形成的【内存溢出】

热度:5950   发布时间:2013-02-25 00:00:00.0
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方法
  相关解决方案