次のループのタイミングを計っていました:
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 の内部がより複雑になったのでしょうか、それとも単に何かが足りないのでしょうか?