[Java] OutOfMemoryError: PermGen Space

最近、ごく短期間ではあるのですがJavaプログラムの開発の仕事をしています。

知識としては知っていたものの、実際、どういうときに出るのかなかなかやっかいなのがタイトルにあるExceptionです。

OutOfMemoryError: Java Heap Spaceと出る場合は、ヒープ領域の不足なので想像がつきやすいのですが、PermGen Spaceと出る場合は、非ヒープ領域の不足なので、なぜ起きたかが少々わかりにくいです。

outofmemoryerror_permgen_space.png

おそらく、非ヒープ(Permanent世代)はクラスローダなんかに関係していたと思うので、今回の対象のシステムが大量のクラスをロードしているのかも知れません。Tomcatでreloadable=trueの状態なので、コードを修正するたびにクラスをロードし直すことになり、それが繰り返されることで領域があふれるのかもしれません。

この推測が当たっていれば、開発時固有の問題なので、心配いらないとは思うのですが。そうでないとすると、ちょっと怖いですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です