目次
背景J2SE5.0のJava HotSpot? VMに関する覚書。主にGarbage collcor周り、且つサーバVMの場合。基本的にJ2SE5.0向け配布ドキュメントからの抜粋である。 client/serverJava HotSpot? VM、J2SE5.0でも2種類ある。HotSpot? VMは1.4からのVMで、1.3までのものはこれに対して Classic VMと言われる。
server/clientに共通する機能は
5.0からの機能メモっておこうと思うところだけ、抜粋しとく。クラスデータの共有マシンクラスの検出Client VMとServer VMのどっちを使うかの判定基準を、起動時に勝手に選んでいる。 J2SE5.0の場合、2CPU/2GB RAMのマシンをサーバクラスマシンとしている。当然のことだが、コマンドライン引数で、-server or -clientが明示的に指定されている場合は コマンドラインの指定に従う。
凡例:X=デフォルトVM、-=このplaftormで提供されていないVM
GCの ErgonomicsGCのErgonomicsって、日本語ではどういうのでしょう?wDefault garbage collectorの変更サーバクラスのマシン、且つサーバVMを実行している場合、
となった。上記 switchの明示的な指定で変更可能。 初期heap/max heapの変更パラレルコレクタを使用するサーバクラスマシン(VMはクライアントVM、サーバVMのどちらも) では
となった。 パラレルコレクタのelapsedしきい値パラレルコレクタが、少量のheapのcollectionにしきい値(はよくわからん)を越えると メモリ不足の例外をthrowする。以下のパラメタが、この例外のtriggerになる
AdaptiveSizePolicy?の実装変更パラレルコレクタを使用すると、デフォルトでonになる -XX:+UseAdaptiveSizePolicy?の実装は
目標値は1/(1+ [GCTimeRatioの設定値])である。
を考慮して、改修された。以下の順で、チェックしている
lockの検出Ctrl+\ を受けて、thread dumpとLockの検出をするらしい。これは、まぁ、一回使ってみれという感じ。 1.4からの機能メモっておこうと思うところだけ、抜粋しとく。loggcGC時に、かかった時間とheapの変動量をログファイルにはく-verbose:gc互換機能。jvmstat/jstatはhsperfdataをpollingして表示するのとは違って、こっちは処理後にファイルにはく。
参考 |