クラスを実行すると、次の例外があります。
スレッド「メイン」の例外Java.lang.OutOfMemoryError:GCオーバーヘッド制限を超えました
クラスパッケージのmaven pom.xml内からjvmArgヒープサイズを増やしてみました。
http://maven.Apache.org/xsd/maven-4.0.0.xsd "> 4.0.0
<parent>
(...)
</parent>
<artifactId>(...)</artifactId>
<name>(...)</name>
<properties>
<javaOpts.Xmx>4g</javaOpts.Xmx> <!-- default that can be adjusted on the command line with -DjavaOpts.Xmx=... -->
<(...).basedir>${project.basedir}/..</(...).basedir>
</properties>
<build>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<configuration>
<launchers>
<launcher>
<id>MyClassName</id>
<mainClass>(...)</mainClass>
<jvmArgs>
<jvmArg>-Xmx${javaOpts.Xmx}</jvmArg>
(...)
私は最後の引用された行を多くの値で試しました:
<jvmArg>-Xmx512m{javaOpts.Xmx}</jvmArg>
<jvmArg>-Xmx4096M{javaOpts.Xmx}</jvmArg>
<jvmArg>-Xmx10000000000M{javaOpts.Xmx}</jvmArg>
しかし、それらすべてについて同じエラーがあります。
誰でも私を助けることができますか?観察:IntelliJ IDEAから実行しています。
Java 7
Mavenの問題ではなく、VMにより多くのメモリを割り当てる必要があります。 環境変数でこれを行うと、Mavenランチャーはロード時にこれらの設定を自動的に選択し、それらを使用して基礎となるJava VMを構成します。
簡単な方法は次のとおりです。
export MAVEN_OPTS="-Xmx1024M -Xss128M -XX:MaxPermSize=1024M -XX:+CMSClassUnloadingEnabled"
ウィンドウズ:
set MAVEN_OPTS=-Xmx1024M -Xss128M -XX:MaxPermSize=1024M -XX:+CMSClassUnloadingEnabled
(二重引用符なし)
Java 8
Java 8は永続的な世代をメタスペースに置き換え、新しい設定は次のようになります。
export MAVEN_OPTS="-Xmx1024M -Xss128M -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=1024M -XX:+CMSClassUnloadingEnabled"
私は同じような問題を抱えていました:私のプロジェクトワークスペースは250以上のMavenモジュールで構成されており、IDEAでpom.xml
を開くと、<project>
および<parent>
タグに赤の下線が引かれ、このエラーが表示されました壊れたタグの上にマウスを移動すると:
Java.lang.OutOfMemoryError:GCオーバーヘッド制限を超えました
私の解決策:
>Settings >Build, Execution, Deployment >Build Tools >Maven >Importing
に高い値を設定します-例-Xmx1g
and>Settings >Build, Execution, Deployment >Build Tools >Maven
(Mavenホームディレクトリ)の下のmaven実装を(Bundled) Maven 3
からローカルのmavenインストール(IDEAにバンドルされているものではない)に変更します。 to /opt/maven/Apache-maven-3.3.9
: 以前にバンドルされたMavenで問題が発生したため、バンドルされたMavenを信頼していません。
上記の一番上の答えにパラレルガベージコレクションを追加するのがおそらく最良の選択肢です。
-Xmx2048M -Xss128M -XX:MaxPermSize=2048M -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC
場合によっては、GC制限を無効にすることができます。
-XX:-UseGCOverheadLimit
非常に遅い応答で申し訳ありませんが、私の答えは他の人にも役立つと思います。
scala-maven-pluginはMAVEN_OPTSでは動作しません。メモリを増やす唯一の方法は、プラグイン構成でjvmArgsを使用することです。ただし、jvmArgsはランチャーセクションではなく、次のように構成セクションに配置する必要があります。
<configuration>
<jvmArgs>
<jvmArg>-Xmx1024m</jvmArg>
<jvmArg>-Xms256m</jvmArg>
</jvmArgs>
</configuration>
これは私のために動作します。
JvmArgsをpom.xmlの maven-scala-plugin 構成に追加しています。
IntelliJ IDEAから実行しているとはどういう意味ですか?あなたはそれをどのくらい正確にやっていますか?ビルド/実行によって、Mavenを経由することはまったくありません!それから、pom.xmlのmaven-scala-pluginランチャーを変更することは基本的に役に立ちません。 IntelliJの実行構成を変更するには、 this answer を参照してください。
本当にMavenから実行する場合は、pom.xmlにjvmArg paramsを追加した後、プラグインを実行する必要があります。
mvm scala:run -Dlauncher=MyClassName
注:MyClassNameを配置する場所は、実際にはクラスではなくランチャーの名前です。多くのプロジェクトでは、人々はランチャーに適切な名前を付けます。これにより、クラスのローカル名と一致することがよくあります。ただし、必要に応じてMyLauncherと呼ぶこともできます。
Maven-scala-pluginのドキュメントを読むと役立つかもしれません。