老师我想问下饿汉模式如果不加static报错的问题

老师我想问下饿汉模式如果不加static报错的问题

代码如下
class F{
F a=new F();
public static void main(String[] arts){
F b=new F();
}
}
程序会报栈溢出异常,但是我觉得应该是堆异常,因为对象和成员变量应该存储在堆里会不断的产生直至溢出,可是栈里的局部变量没有增加啊?请老师解惑

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

所有的方法包括构造方法都要进栈执行,这段代码引发了无参构造方法的无限递归调用,也就会在栈内累计,超出栈内存可容纳的方法个数,导致栈内存溢出。

如果我的回答解决了你的问题,请采纳,祝学习愉快.

好帮手慕雪 2018-08-10 18:51:23

这里形成了一个死循环,main()中new 了一个本类的对像,类中还有一个属性对象,又是要new本类的对象.这就死循环了。

  • 提问者 暖阳洋 #1
    老师我知道为什么是死循环,我想知道为什么是栈溢出而不是堆溢出
    2018-08-10 18:57:36
  • 栈放变量和对象引用
    2018-08-10 19:08:20
  • 提问者 暖阳洋 回复 好帮手慕雪 #3
    能详细讲下么
    2018-08-10 19:21:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师