空值只能赋予引用类型,如果我理解正确则指向地址0.此外,如果使用“new”关键字创建类的实例,我们将为对象分配内存。我的问题是,如果我们将一个对象初始化为null,它是否仍然消耗内存?
2 回答
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
int[] arr = null;
实际上没有初始化任何东西。它只是创建一个arr
指向地址0 的引用。所以不,它不会占用任何空间,除了引用arr
本身需要多少(通常4或8个字节,具体取决于系统)。
另一方面,这会初始化对象并占用“大量”空间(至少大小为10x int
,因此> = 40个字节):
int[] arr = new int[10];
幕布斯7119047
TA贡献1794条经验 获得超8个赞
我对你要说的内容有两种解释:
初始化为NULL
String hello = null;
这甚至没有初始化任何东西。这就像有一个抽屉,在上面贴上标签,但实际上没有把任何东西放在抽屉里面。结果,它不消耗任何内存
设置为NULL
String hello = "hey there!";hello = null;
这就像抽屉里装满了东西,然后将所有东西拿出去扔掉。这仍然消耗内存,因为你扔掉的旧东西仍然存在。为了摆脱旧的东西,垃圾收集通常会迟早开始并将其全部删除。你也可以System.gc()
手动,而不是我推荐它。
添加回答
举报
0/150
提交
取消