Windows2003マシンでTomcat6を実行しています。このサーバーに2つのGrailsアプリをデプロイしましたが、デプロイ後にすべてがクラッシュし、従来のPermGenエラーが発生することにすぐに気付きました。
java.lang.OutOfMemoryError: PermGen space
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
java.lang.ClassLoader.defineClass(ClassLoader.java:616)
org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.de
...
だから私はこの問題の一般的な修正を見つけました:ヒープとpermgenスペースを増やす:
set CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m"
C:\ apache-tomcat-6.0.26 \ bin\catalina.batに追加されました。残念ながら、これは機能しませんでしたが、問題は、Tomcatがそれを取得しているかどうかわからないことです。さまざまなログを確認しましたが、これらのオプションが出力されません。それらをログに記録し、Tomcatがそれらを読み取ったことを確認する方法はありますか?
編集:tomcat6w.exeで次のJVMオプションを追加しようとしました:
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+UseConcMarkSweepGC
そして何も変わっていません。2〜3分の稼働時間後にpermGenを取得します。他のアイデアはありますか?
乾杯!ムローン