0

我们知道对象的大小取决于它的字段类型。但是对象实例化时间是否取决于其字段类型?看我的测试

public class Test {
    byte f1;
    byte f2;
    byte f3;
    byte f4;
    byte f5;
    byte f6;
    byte f7;
    byte f8;
    byte f9;
    byte f10;

    public static void main(String[] args) {
        int n = 1000000;
        Test[] a = new Test[n];
        long t0 = System.currentTimeMillis();
        for(int i = 0; i < n; i++) {
            a[i] = new Test();
        }
        System.out.println(System.currentTimeMillis() - t0);
    }
}

也许不是一流的,对于不同的字段类型仍然给我相当稳定的结果:

byte - 125 ms
int  - 250 ms
long - 370 ms

这是为什么?我在笔记本(Celeron 925)上从 Eclipse 运行它,它需要 -Xmx1024M。

4

1 回答 1

0

较大的类型将需要更多时间,因为操作系统必须在HEAP中搜索合适的内存量以适应该类型。所以类型越大,通常需要更多的时间。

大多数时候对象实例化时间与字段类型成正比

于 2012-12-03T04:04:07.783 回答