Ste*_*eve 2 java memory-management
执行此代码时内存会发生什么变化?
int[] dim1 = new int[2];
dim1 = myObject.getCoord();
public int[] getCoord() {
int[] dim2 = new int[] {y1, x1} ;
return dim2;
}
Run Code Online (Sandbox Code Playgroud)
似乎空间首先分配给两个数组dim1和dim2.虽然dim1将会存在,但dim2仅存在两行,然后转到gc.它似乎会导致真正大型数组的性能问题.但是,下面的代码是编译时错误.
public int[] getCoord() {
return {y1, x1} ;
}
Run Code Online (Sandbox Code Playgroud)
背后的逻辑是什么?创建一个数组的正确方法是什么?
你的意思是这样吗?
int[] dim1 = myObject.getCoord();
public int[] getCoord() {
return new int[] {y1, x1} ;
}
Run Code Online (Sandbox Code Playgroud)
通过方法调用只创建一个数组,并且只有一个引用dim1.
但理想情况下,您可能不希望"获取"方法创建新事物,只需查看您可能不期望的声明即可.就个人而言,我更喜欢
int[] dim1 = myObject.createCoord();
public int[] createCoord() {
return new int[] {y1, x1} ;
}
Run Code Online (Sandbox Code Playgroud)
这使得该方法明确地"创造"了一个东西.