Java GC是否取消了数组的空元素?

时间:2014-05-20 14:01:27

标签: java memory-management garbage-collection

我想“删除”数组中的某些元素,当我将它们设置为null时,我尝试打印时没有显示这些元素,它们是否被垃圾收集器删除或者println方法只是忽略空值?例如:

this.E = new String[3];
E[0]="blue";
E[1]="red";
E[1]="gray";
this.E[0] = null;
for(int i = 0 ; i < E.length ; i++)
    System.out.println(E[i]);

那段代码只输出红色和灰色,所以蓝色是内存的dellocated,或者null值被忽略,因为它不代表任何东西?

2 个答案:

答案 0 :(得分:1)

它也取决于其他线程。如果任何活动线程引用了删除的对象,则无法进行垃圾回收

答案 1 :(得分:1)

值保留在内存中,GC需要取消定位整个数组以执行您想要的操作