如果引用变量设置为null,它还会消耗内存吗?

时间:2019-05-14 13:16:59

标签: java

只能将空值赋予引用类型,如果我理解正确,它指向地址0。此外,如果使用“ new”关键字创建类的实例,则我们将为一个东西。我的问题是,如果我们将一个对象初始化为null,它还会消耗内存吗?

2 个答案:

答案 0 :(得分:3)

int[] arr = null;

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

另一方面,这确实会初始化对象,并且会占用“大量”空间(至少10x int的大小,所以> = 40字节):

int[] arr = new int[10];

答案 1 :(得分:1)

对于您要说的话,我有两种解释:

初始化为NULL

String hello = null;

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

设置为NULL

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

这就像有一个装满东西的抽屉,然后将所有东西取出并扔掉。这仍然在消耗内存,因为您扔掉的旧东西仍然存在。为了摆脱旧的东西,垃圾收集通常迟早会开始进行,然后将其全部删除。您也可以手动System.gc(),但不建议这样做。