IBM製JDK5.0の詳細 第2話

デベロッパワークスの新連載がもう2話目を載せていた。

IBM - Japan

今回はGCのお話の第一回目。

以前にデフォルトGCが世代別になったと書いてしまったのだが、変わらずにMark-and-sweepなようだ。
以前の日記を読んで信じてしまった人がいたら大変、申し訳ない。

デファルトがSunと違うのは少し悲しい。
私はBrian Goetz氏DeveloperWorksでの連載の大ファンである。
そのBrian氏の連載はIBMDeveloperWorksにて連載されているにもかかわらず、先行するSunのJDKの解説になっている。
Brian氏によればSunのJDK1.4がGenerationalGCになることによって、以下の恩恵があると説明されていた。

  1. StringやDateのようなimmutableなオブジェクトに恩恵がある
  2. メモリアロケーションC言語よりも高速
  3. ヒープのフラグメントを起こしにくい

私自身はまた日本HPの人たちによってJavaPress誌等に掲載されていた、JVMのチューニングが易しく感じることが大きな利点だと思っている。

IBMのMark&Sweep、Compactionであるとこれらが当てはまらなくなるのではないだろうか?
決して世代別のほうが優れているという訳ではないようであるが、IBMの説明するようにスループットに優れているのならばできるだけ数値を用いた説明が欲しい気がする。

ところで、ZとPでしか使えないSubpoolingポリシーは凄そうだ。
16CPU以上で選択するとある。

We recommend this policy for SMP machines with 16 or more processors. This policy is only available on IBM pSeries® and zSeries® platforms.

SMPでのGCのスケールは難しいそうだが、これの性能の評価をぜひ読みたいものだ。

(時間があれば編集予定)