为了账号安全,请及时绑定邮箱和手机立即绑定

如果引用变量设置为null,它仍会消耗内存吗?[重复]

如果引用变量设置为null,它仍会消耗内存吗?[重复]

翻阅古今 2019-04-19 18:19:18
空值只能赋予引用类型,如果我理解正确则指向地址0.此外,如果使用“new”关键字创建类的实例,我们将为对象分配内存。我的问题是,如果我们将一个对象初始化为null,它是否仍然消耗内存?
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

int[] arr = null;

实际上没有初始化任何东西。它只是创建一个arr指向地址0 的引用。所以不,它不会占用任何空间,除了引用arr本身需要多少(通常4或8个字节,具体取决于系统)。

另一方面,这会初始化对象并占用“大量”空间(至少大小为10x int,因此> = 40个字节):

int[] arr = new int[10];


查看完整回答
反对 回复 2019-05-15
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我对你要说的内容有两种解释:

初始化为NULL

String hello = null;

这甚至没有初始化任何东西。这就像有一个抽屉,在上面贴上标签,但实际上没有把任何东西放在抽屉里面。结果,它不消耗任何内存

设置为NULL

String hello = "hey there!";hello = null;

这就像抽屉里装满了东西,然后将所有东西拿出去扔掉。这仍然消耗内存,因为你扔掉的旧东西仍然存在。为了摆脱旧的东西,垃圾收集通常会迟早开始并将其全部删除。你也可以System.gc()手动,而不是我推荐它。


查看完整回答
反对 回复 2019-05-15
  • 2 回答
  • 0 关注
  • 787 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信