2009年6月17日水曜日

Java Plug-inのヒープメモリーサイズ設定 ――――JRE6とJRE1.4、JRE5の違い

Java Plug-inのヒープメモリーサイズ設定
――――JRE6とJRE1.4、JRE5の違い

アプレットをブラウザに実行する時、
"Out Of Memory Error"のエラーが発生したことが
よくある。
原因は、Java Plug-in用のヒープメモリーが不足です。
では、Java Plug-in用のヒープメモリーサイズが大きく変更できないのか?

具体的いえば:
M1:ブラウザ本体のプログラム、スタック、ヒープなどが使う
 (予約)メモリサイズ(アドインを含む)
M2:JavaVM本体のプログラム、スタック、ヒープなどが使う
 (予約)メモリサイズ
M3:Java Plug-in確保できるメモリーサイズ(-Xmxで指定可能なサイズ)
  =2GB-M1-M2(実は、他の要素もある)
通常の場合、M1=約512MB、M2=約512M;M3最大で1GB割り当て可能
つもり、Win2000、WinXPであれば、Java Plug-in用のヒープメモリーサイズが
1GBより小さい

JRE5、JRE1.4の場合:
①Java Plug-inがブラウザのプロセスに実行されている
②Java Plug-in用のメモリーサイズがブラウザの関連Componentがあるため、
さらに限られている(最大512Mぐらいまでできる?)
③いったん-Xmxに設定されていたヒープメモリーサイズが確保できなければ、
ブラウザが落ちます。

JRE6の場合:
①Java Plug-inが独自のプロセスに実行されている
②Java Plug-inが利用できるヒープメモリーサイズがJRE5とJRE1.4よりもっと
大きく設定できる(1GBぐらい?)
③いったん-Xmxに設定されていたヒープメモリーサイズが確保できなければ、
JRE6のデフォルトサイズ(最大65Mぐらい)でJava Plug-inが実行される。
かた、ブラウザが別のプロセスで実行されるから、落ちることもなくなる。
④JNLPの定義によって、アプレットごとに違うバージョンのJVMが設定できる
(Java Web Startの考えでしょう)

0 件のコメント: