JDK 1.5.0のUpdateバージョンで変わったところその3

Update6からOld領域でもパラレルGCが利用できるようになった

Update6から、XX:+UseParallelOldGCを指定することでOld領域でもパラレルGCが利用できるようになりました。ただ、Update6時点では、試験的な扱いとSunのエンジニアから聞いたような記憶がありますので利用時には十分な試験が必要と思われます。

Update6からUseBiasedLocking オプションが使えるようになった

UseBiasedLocking はどうやら(衝突が起こらない)同期のパフォーマンスを向上させるらしいです*1。下記のフォーラムのサンプルコード実行すると*2、JDK1.6.0_02では、testメソッドを数回実行した後、testメソッドのパフォーマンスの向上が見られます。Update12でチェックしてみるとServerVMでは変化がありますが、ClientVMでは変化が見られませんでした。

1.6.0_02 (-Xmx128m -Xms128m -XX:+UseBiasedLocking -server)
100000000, time=1047.0
100000000, time=1172.0
100000000, time=1094.0
100000000, time=1110.0
100000000, time=109.0
100000000, time=109.0
100000000, time=110.0
100000000, time=109.0
100000000, time=109.0

1.6.0_02 (-Xmx128m -Xms128m -XX:-UseBiasedLocking -server)
100000000, time=1047.0
100000000, time=1062.0
100000000, time=1063.0
100000000, time=1062.0
100000000, time=1078.0
100000000, time=1063.0
100000000, time=1078.0
100000000, time=1062.0
100000000, time=1063.0

1.6.0_02 (-Xmx128m -Xms128m -XX:+UseBiasedLocking -client)
100000000, time=4515.0
100000000, time=485.0
100000000, time=359.0
100000000, time=359.0
100000000, time=375.0
100000000, time=344.0
100000000, time=359.0
100000000, time=360.0
100000000, time=359.0

1.6.0_02 (-Xmx128m -Xms128m -XX:-UseBiasedLocking -client)
100000000, time=4188.0
100000000, time=4187.0
100000000, time=4047.0
100000000, time=4063.0
100000000, time=4062.0
100000000, time=4063.0
100000000, time=4047.0
100000000, time=4046.0
100000000, time=4079.0

1.5.0_12 (-Xmx128m -Xms128m -XX:+UseBiasedLocking -server)
100000000, time=485.0
100000000, time=484.0
100000000, time=359.0
100000000, time=344.0
100000000, time=359.0
100000000, time=360.0
100000000, time=344.0
100000000, time=359.0
100000000, time=359.0

1.5.0_12 (-Xmx128m -Xms128m -XX:-UseBiasedLocking -server)
100000000, time=4172.0
100000000, time=4047.0
100000000, time=3891.0
100000000, time=3890.0
100000000, time=3907.0
100000000, time=3890.0
100000000, time=3922.0
100000000, time=3891.0
100000000, time=3890.0

1.5.0_12 (-Xmx128m -Xms128m -XX:+UseBiasedLocking -client)
100000000, time=4719.0
100000000, time=4734.0
100000000, time=4719.0
100000000, time=4688.0
100000000, time=4656.0
100000000, time=4656.0
100000000, time=4688.0
100000000, time=4718.0
100000000, time=4672.0

1.5.0_12 (-Xmx128m -Xms128m -XX:-UseBiasedLocking -client)
100000000, time=4360.0
100000000, time=4328.0
100000000, time=4312.0
100000000, time=4313.0
100000000, time=4328.0
100000000, time=4297.0
100000000, time=4312.0
100000000, time=4344.0
100000000, time=4344.0

Update 5からラージページを利用することができるようになった

XX:+UseLargePages を指定することで、ラージページを利用することができる。OS側の指定は下記に記述されている。

*1:アプリケーションによっては、パフォーマンスが悪くなる場合もらしい 参考文献:Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle

*2:このサンプルコードは他のスレッドからは参照されないオブジェクトでロックをかけている