关于新建数组空间释放问题
来源:3-7 循环队列的实现
Ethan_Qjm
2020-03-25
private void resize(int newCapacity) {
E[] newData = (E[])new Object[newCapacity + 1];
for(int i = 0; i < size; i++) {
newData[i] = data[(i+front) % data.length];
}
data = newData;
newData = null; // 不知道有没有用************
front = 0;
tail = size;
}
老师,我想问一下,如上代码,其他的都和你的代码是一样的,在我注释的地方,我这样加上这一句,newData的内存是否更快的被GC回收呢?因为我对GC的了解不深,所以我突发了这样想法,希望老师解答一下我这个问题,感谢。
写回答
1回答
-
liuyubobobo
2020-03-25
这里是不需要的。当然你加上没有错。
因为 data = newData 一句话,就已经让 data 不再指向原来的内存空间了,所以原来的内存空间不再有引用,GC 就已经可以正确的判断出,这个内存空间可以释放了:)
继续加油!:)
032020-03-25
相似问题