我正在计时以下循环:
public static void main(String[] args) {
long time = System.currentTimeMillis();
List<Hashtable> objects = new ArrayList<Hashtable>(10000000);
for (int i = 10000000; i > 0; i--) {
objects.add(new Hashtable());
}
System.out.println(System.currentTimeMillis() - time);
}
在 JDK 1.6.0_33 中,每次大约需要 2500 毫秒。切换到 JDK 1.7.0_25 需要5600 ms。
与只执行 new Hashtable() 相同,而不将其添加到列表中:Java 1.6: 60 ms, Java 1.7: 460 ms。
这看起来很奇怪,Java7 中的某些东西是否恶化了,Hashtable 的内部是否变得更加复杂,或者我只是遗漏了一些东西?