rha*_*vin 3 java arrays garbage-collection multidimensional-array
当我做以下事情时:
public double[] someFn()
{
double[][] b = new double[5][5];
return b[2];
}
Run Code Online (Sandbox Code Playgroud)
缓冲区b的其余部分是否已准备好用于垃圾箱,或者仍然在某个地方使用ref到第二行停止整个阵列b被收集?
正如我正在谈论'回合通用阵列,我不能测试最终确定...
是的,每个元素b是只是一个参考double[].每个都可以是对独立对象的引用 - 或者几个元素可以引用相同的数组,或者具有空值.
从元素到包含它的数组没有"反向链接".
基本上,您应该将"多维"数组视为正常数组,其中元素类型恰好是另一个数组.例如:
String foo() {
String[] array = getStrings();
return array[0];
}
Run Code Online (Sandbox Code Playgroud)
方法返回的字符串引用对数组一无所知,它引用的字符串对象也不知道.它与数组数组的方式完全相同.