只能将空值赋予引用类型,如果我理解正确,它指向地址0。此外,如果使用“ new”关键字创建类的实例,则我们将为一个东西。我的问题是,如果我们将一个对象初始化为null,它还会消耗内存吗?
答案 0 :(得分:3)
int[] arr = null;
实际上没有初始化任何东西。它只会创建一个指向地址0的引用arr
。因此,不会,它不会占用任何空间,除非引用arr
本身需要占用多少空间(通常4或8个字节,具体取决于系统)。
另一方面,这确实会初始化对象,并且会占用“大量”空间(至少10x int
的大小,所以> = 40字节):
int[] arr = new int[10];
答案 1 :(得分:1)
对于您要说的话,我有两种解释:
String hello = null;
这甚至不初始化任何东西。就像有一个抽屉,在其上贴上标签,但实际上没有在抽屉内放任何东西。结果,它不消耗任何内存
String hello = "hey there!";
hello = null;
这就像有一个装满东西的抽屉,然后将所有东西取出并扔掉。这仍然在消耗内存,因为您扔掉的旧东西仍然存在。为了摆脱旧的东西,垃圾收集通常迟早会开始进行,然后将其全部删除。您也可以手动System.gc()
,但不建议这样做。