当我执行以下操作时:
public double[] someFn()
{
double[][] b = new double[5][5];
return b[2];
}
缓冲区 b 的其余部分是否已准备好放入垃圾箱,或者仍在使用中的第 2 行引用是否会阻止整个数组 b 被收集?
当我在谈论“通用数组”时,我无法测试最终确定......
最佳答案
是的,b
的每个元素只是对double[]
的引用。每个元素都可以是对独立对象的引用 - 或者多个元素可以引用同一个数组,或者具有空值。
没有从元素到包含它的数组的“反向链接”。
基本上,您应该将“多维”数组视为普通数组,其中元素类型恰好 是另一个数组。例如:
String foo() {
String[] array = getStrings();
return array[0];
}
该方法返回的字符串引用对数组一无所知,它所引用的字符串对象也一无所知。这与数组的数组完全相同。
关于Java 垃圾收集器 : Are rows of generic arrays independent objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15450381/