エンジニア的なネタを毎週書くブログ

東京でWebサービスの開発をしています 【英語版やってみました】http://taichiw-e.hatenablog.com/

Mavenで実行しているTestに割り当てるヒープを増やす方法

Maven Surefire Pluginを使う。
https://maven.apache.org/surefire/maven-surefire-plugin/

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
    </configuration>
  </plugin>

ぐぐると、MAVEN_OPTSに書けばいい とか、 Jenkinsの場合はGlobal MAVEN_OPTSに書けばいい とか出てくるんだけど、
これは、MavenJavaプロセスに割り当てるメモリ。
その中で実行されるテスト用のメモリは別に確保される。

実際、テストコード内で以下のように割り当てメモリを書き出してみると

int mb = 1024 * 1024;
Runtime runtime = Runtime.getRuntime();
System.out.println("Max Memory:" + runtime.maxMemory() / mb);

MAVEN_OPTSに何を書いても増えないし減らない。