我正在计划以下循环:
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 。
只需执行新的Hashtable(),而不将其添加到列表中:Java 1.6:60 ms,Java 1.7: 460 ms 。
这看起来很奇怪,在Java7中做了一些恶化,Hashtable的内部变得更复杂,或者我只是遗漏了什么?