pde*_*eva 2 java garbage-collection
如果我有一个阵列说 -
int[] a = new int[10];
Java GC在进行收集时会将其视为10个对象还是单个对象?
更新:
所以根据给定的答案,从GC的角度来看,它不是更有效,而不是
List l;
for(i =0;i<1000;i++)
l.add(new MyObj(343,"asdfasfd"));
Run Code Online (Sandbox Code Playgroud)
我们应该做的 -
int[] a; String[] b;
for(i =0;i<1000;i++) {
a[i]=343;
b[i] = "asfasfsafsaf";
}
Run Code Online (Sandbox Code Playgroud)
因为在第一种情况下,我们最终会创建1000个额外的对象,而在第二种情况下,我们不会.
Joh*_*ica 10
这是一个单一的对象.数组是一个连续的对象,int是基本类型,而不是对象类型,因此没有为10 int秒创建的对象.
// 1 object
int[] intArray = new int[10];
Run Code Online (Sandbox Code Playgroud)
如果你有一个10 Object秒的数组,那么就会有11个对象:10个对象加上数组.数组本身仍然只是一个对象; 它恰好包含对其他10个对象的引用.
// 1 object...
Object[] objectArray = new Object[10];
// ...Plus 1 for each element once they are instantiated.
for (int i = 0; i < 10; ++i) {
objectArray[i] = new Object();
}
Run Code Online (Sandbox Code Playgroud)