JavaをMavenでビルドした際に、StackOverflowErrorが発生したときの解決方法をメモ。
- エラー内容
[ERROR] システム・リソースが不足しています。
[ERROR] 詳細は次のスタック・トレースで調査してください。
[ERROR] java.lang.StackOverflowError
原因
これは初めから予測はついていた。他システムと連携するAPI関連のモジュールクラスが5万ステップに達するほど大きかったため。コードをなんとかするのが一番きれいな解決策だが、そうできない事情があったため今回は以下で対応-
対応
2つの対応方法があります。- 対応方法1
MAVENの環境変数でビルド時のStackサイズを増やす。
SET MAVEN_OPTS=-Xms256m -Xmx1024m -Xss2048k
-Xss2048kでStackサイズを指定しています。 - 対応方法2
pom.xml内でStackサイズをセットする。
※compilerArgsはmaven-compiler-plugin3.1以降で対応です
- 対応方法1
pom.xml
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<compilerArgs>
<arg>-J-Xss2048k</arg>
</compilerArgs>