2011-06-20 9 views
4

私はこの問題の助けが必要です。私は誰にこのことが起こっているのか、それを防ぐか、避ける方法を教えてください。 Grailsの0.6以来Grails PermGemエラー

Exception in thread "Thread-747" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-748" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-759" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-760" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-764" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-765" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-766" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-767" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-773" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-774" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-780" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-781" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-788" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "Thread-789" java.lang.OutOfMemoryError: PermGen space 
2011-06-20 14:42:10,668 [http-8080-6] ERROR [/CM].[grails] - Servlet.service() for servlet grails threw exception 
java.lang.OutOfMemoryError: PermGen space 
2011-06-20 14:42:10,668 [http-8080-6] ERROR [/CM].[default] - Servlet.service() for servlet default threw exception 
java.lang.OutOfMemoryError: PermGen space 
: java.lang.OutOfMemoryError: PermGen space 
     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:116) 
     at _GrailsPackage_groovy$_run_closure8.doCall(_GrailsPackage_groovy:275) 
     at _GrailsPackage_groovy$_run_closure8.call(_GrailsPackage_groovy) 
     at _GrailsRun_groovy$_run_closure8.doCall(_GrailsRun_groovy:245) 
     at RunApp$_run_closure1.doCall(RunApp.groovy:35) 
     at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381) 
     at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415) 
     at gant.Gant$_dispatch_closure7.doCall(Gant.groovy) 
     at gant.Gant.withBuildListeners(Gant.groovy:427) 
     at gant.Gant.this$2$withBuildListeners(Gant.groovy) 
     at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source) 
     at gant.Gant.dispatch(Gant.groovy:415) 
     at gant.Gant.this$2$dispatch(Gant.groovy) 
     at gant.Gant.invokeMethod(Gant.groovy) 
     at gant.Gant.executeTargets(Gant.groovy:590) 
     at gant.Gant.executeTargets(Gant.groovy:589) 
Caused by: java.lang.OutOfMemoryError: PermGen space 
--- Nested Exception --- 
java.lang.OutOfMemoryError: PermGen space 
Error automatically restarting container: java.lang.OutOfMemoryError: PermGen space 
Error executing script RunApp: PermGen space 
java.lang.OutOfMemoryError: PermGen space 
Error executing script RunApp: PermGen space 
Application context shutting down... 
Application context shutdown. 
+0

あなたのGrailsアプリケーションにはどのメモリ設定を使用していますか? permGen空間の標準64Mは、一般的なgrailsアプリケーションでは十分ではありません。 – Ruben

答えて

19

PermGenは、クラスをロードするために使用されるJVMのメモリ領域です。

アプリケーションが実行されると、特に、デバッグ環境にある場合は、クロージャを広範囲に使用する場合、このメモリがますます多く使用されます。

これを修正する方法は、それ以上のものを追加することです!

これは、アプリケーションを起動するときに1つまたは2つのパラメータをJVMに渡すことによって行われます。

パラメータは以下のとおりです。

-XX:MaxPermSize=256m 
-XX:PermSize=128m 

(特定のニーズに値を調整する)

PermSizeをはPermGenの初期サイズとなり、MaxPermSizeをATがその最大サイズになりますあなたの投稿のような例外をスローする前に増加します。

デフォルトでは、64Mに設定されています。これは、「実際の」アプリケーションを使用している場合はあまりありません。

PAYの注意:あなたのtotal memory usage次のようになります。Heap size + Perm Size

+5

+1「お金を払う」! – user3111525

0

のFAQを確認してください

Q: OMG I get OutOfMemoryErrors or PermGen Space errors when running Grails in development mode. What do I do?

、Grailsは自動的にあらかじめコンパイルし、サーバーの再起動を使用して、Javaソースと ドメインクラスを再コンパイルします。この は、サーバが長い 時間実行され、多くの変更が行われた場合、permgen領域が使い果たされる可能性があります。あなたが OutOfMemoryErrorsを取得するWindows上でのGrails 0.6での問題もあり

Grailsの-Ddisable.auto.recompile =真の実行アプリ

:それはあなたにとって重要 でない場合は、でこの機能を無効にすることができます開発モードのアクティビティ期間中に再コンパイルするために が発生しました。これはSVNの頭で解決されるかもしれませんが、 この問題が表示される場合は、上記のオプションも役立ちます。

最も簡単にアプリケーションサーバーを再起動することができます。

1

あなたはそれがGroovyのコンパイラで問題ですので、あなたのメモリは任意の助けになることはないだろう増加し、その後もサーブレットバージョン3.0を使用している場合。すぐにリリースされる新しいバージョンの1.8.2/1.9(?)がこの問題を解決します。その間に、サーブレットのバージョンを「2.5」(BuildConfig.groovy内)に戻して、この問題を解決することができます。

サーブレットのバージョンを2.5に変更するという欠点は、Glassfishアプリケーションサーバーにデプロイすることができないため、醜い回避策を2.5に変更して「run-app」を使用することです。 glassfishに展開する場合は、BuildConfig.groovyでサーブレットのバージョンを「3.0」に変更し、「war」を実行してGlassfishに展開します。 "2.5"に戻してローカルのマシンで再度実行してください。 STS IDEで

0

は以下のとおり設定します。

-XX:MaxPermSizeを= 512メートル-XX:PermSizeを= 128メートル

enter image description here

を、私はそれが役に立てば幸い。

関連する問題