2006-01-17 メモリは足りているのに“OutOfMemory” java Javaアプリケーションを動作させていて、「OutOfMemoryが出た」「Java VMが落ちた」という問い合わせを受けることがある。この場合、たいていはアプリケーションの問題や、設定の問題であることが多い。本稿では、HP-UX上でのJava VMを例に、OutOfMemoryが出る原因とその対処方法を紹介する。なお、本稿に登場する用語は第6回「APサーバからの応答がなくなった〓GCをチューニングしよう〓」で解説しているので、参照してから読んでほしい。 OutOfMemoryになる典型的なケースは Old領域が足りない Java VMのParmanent領域が足りない カーネルパラメータが小さすぎる カーネルパラメータが足りない ほかのプロセスが起動できない EXEC_MAGICで使えるPrivate領域を使い果たした Java VMのParmanent領域が足りない サーバーサイドプログラミングでは結構ありがちらしい。メモリーデバッガなどで確認して適当なサイズを割り当てる。 割り当て方法 環境変数JAVA_OPTSやCATALINA_OPTSで下記の書式で記述する。 -XX:PermSize=<初期値> -XX:MaxPermSize=<最大値> サイズ指定の例 -XX:PermSize=64m -XX:MaxPermSize=128m