1

Ant でビルドを実行すると、次のエラーが発生します。

buildcallbacks.xml:39: org.sonar.runner.RunnerException: java.lang.OutOfMemoryError: PermGen space

これは、ソナーがコード上で実行されるビルドの一部です。

このエラーがどこから来ているかを正確に知る方法はありますか?つまり、ソナーサーバーまたはクライアントなどですか?

これが私のbuildcallbanks.xmlの39行目です

<sonar:sonar />

編集: Sonar 内の wrapper.conf から permsize を増やしてみましたが、どれだけ高く設定しても同じ問題が発生します。私はまだ何かが欠けているに違いない?

4

4 に答える 4

7

私は実際にあなたの後にこれを見に戻った - それはまだ失敗していた. あなたはもうすぐそこにいましたが、私は2つのことを見つけました:

  1. ANT_OPTS の代わりに JAVA_OPTS を使用していた
  2. CMSClassUnloadingEnabled は、UseConcMarkSweepGC も使用する場合にのみ使用されます。ここを参照してください: CMSPermGenSweepingEnabled と CMSClassUnloadingEnabled の比較

そのため、現在うまく機能しているように見える設定は次のとおりです。

ANT_OPTS="-Xmx1024m -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=512m"

更新: 数 年後、問題が再発したため、実際にこれを再訪しました。実際には GC 設定をいじる必要はなく、メモリだけをいじる必要があります。実際に使用する正しいオプションは次のとおりです。

ANT_OPTS="-Xmx2G -XX:MaxPermSize=1G"

明らかに、マシンに合わせてメモリ値を微調整できます。

これが他の人に役立つことを願っています。

于 2012-12-09T13:57:35.740 に答える
1

このエラーは特定のコード行が原因ではないため、特定しようとしても意味がありません。ant が使用する Java ランタイムを再構成して、PermGen スペースの制限を引き上げるだけです。この wiki ページには、これを実現する方法が記載されています。基本的に、ANT_OPTS環境変数を設定します。

于 2012-11-01T11:05:47.610 に答える
0

ソナー サーバーの permspace を増やしても、効果がないように見えました。

この問題は、Bamboo の「アセンブリ」段階で実行される ant ターゲットが多すぎるために発生したようです。現在、「すべてのプロダクションをクリーンアップ」を実行してから、ant ソナー プラグイン .jar を呼び出しています。

また、アンロードされるべきときにクラスがアンロードされていないようです。これは、次の JVM パラメータで修正されました: -XX:+CMSClassUnloadingEnabled

于 2012-11-13T14:14:49.790 に答える
0

ヒープ サイズを増やす代わりに、permgen のサイズを増やしてみてください。これを行うことができます

ANT_OPTS=-XX:MaxPermSize=128m

デフォルトのサイズは 64 MB であるため、この設定は使用可能な最大メモリを 2 倍にする必要があります。

PermGen メモリは、クラス定義など、JVM の実行中にあまり変更されないものに使用されます。

于 2012-11-01T12:03:23.497 に答える