gc问题:单个对象或10个对象的10个整数数组?

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)