3

プロジェクト作業に Maven を使用しようとしていますが、メモリ関連の問題で立ち往生しています。

Mavenを実行すると、次の行を使用して修正したヒープスペースエラーが発生します

set MAVEN_OPTS="-Xmx1586m"

この後、Maven を再度実行すると、ヒープ領域エラーは発生しませんが、PermGen 領域エラーが発生します。それを解決するために、次の構文を使用しました

set MAVEN_OPTS="-Xmx1586m -XX:MaxPermSize=512m"

しかし、 MaxPermSizeオプションの使用を開始すると、次のエラーが発生します

無効な最大ヒープ サイズ: -Xmx1586m -XX:MaxPermSize=512m

Java仮想マシンを作成できませんでした。

Xmx と MaxPermSize に異なる値の組み合わせを設定してサイズを制御しようとしましたが、すべて無効です。

このエラーは、MaxPermSize オプションを MAVEN_OPTS に配置した場合にのみ発生します。そのオプションを削除すると、上記のエラーは発生しませんが、PermGen エラーは発生します。

私が間違っていることは何か提案はありますか?

4

4 に答える 4

12

問題は、Javaがコマンドラインオプションを理解していないことです。メッセージ:

Invalid maximum heap size: -Xmx1586m -XX:MaxPermSize=512m

は、Javaが文字列 "-Xmx1586m -XX:MaxPermSize = 512m"全体を使用して、最大ヒープサイズを設定しようとしたことを示しています。

私の推測では、引用符を使用せずに環境変数を設定する必要があります。試す:

set MAVEN_OPTS=-XMx1586m -XX:MaxPermSize=512m
于 2012-07-27T12:34:38.657 に答える
6

初期ヒープ サイズと初期 permgen サイズを比較的小さく設定することができますが、-Xms128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m を介して適切な最大ヒープとパージェントを設定できます。

また、permgen を 512 に設定しないでください。典型的なシナリオでは多すぎます。

また、maven で fork オプションを使用して、異なる JVM でプラグインの実行を開始することもできます。

例えば

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
      <fork>true</fork>
    </configuration>
  </plugin>

また、メモリを割り当てる際には、使用可能な空きメモリが十分にあることも確認してください。

于 2012-07-27T12:51:12.093 に答える
2

私の推測では、32 ビット OS 上に 32 ビット JVM があり、それほど大きなアプリケーションを作成することはできません。使用するメモリを減らすか、64 ビット OS で 64 ビット JVM を使用してみてください。

于 2012-07-27T11:55:52.853 に答える
0

それは単なる大文字の問題でしょうか?あなたが持っている:

set MAVEN_OPTS="-XMx1586m -XX:MaxPermSize=512m"

おそらく必要な場合(小文字の「m」に注意してください):

set MAVEN_OPTS="-Xmx1586m -XX:MaxPermSize=512m"
于 2012-07-27T12:47:38.677 に答える