最近、Web アプリケーションで次のエラーが発生しました:
java.lang.OutOfMemoryError: PermGen スペース
これは、Tomcat 6 および JDK 1.6 で実行される典型的な Hibernate/JPA + IceFaces/JSF アプリケーションです。どうやら、アプリケーションを数回再デプロイした後にこれが発生する可能性があるようです。
原因は何ですか? また、回避するにはどうすればいいですか? どうすれば問題を解決できますか?
ベストアンサー1
解決策は、Tomcat の起動時に JVM コマンド ラインに次のフラグを追加することでした。
-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
これを行うには、Tomcat サービスをシャットダウンし、Tomcat/bin ディレクトリに移動して tomcat6w.exe を実行します。「Java」タブで、「Java オプション」ボックスに引数を追加します。「OK」をクリックして、サービスを再起動します。
指定されたサービスがインストールされたサービスとして存在しないというエラーが発生した場合は、以下を実行する必要があります。
tomcat6w //ES//servicename
ここで、servicename はservices.msc に表示されるサーバーの名前です。
出典: orxのコメントエリックのアジャイル回答。