Java,Gradle,CI和指定内存使用限制

时间:2014-08-08 15:32:08

标签: java android command-line gradle continuous-integration

我在CI环境中运行Robolectric测试用例,它在所有容器中设置了4gig的上限。由于我的测试用例已经增长,因此内存使用率也在增长。

我无法再运行成功的测试/构建,因为一个过程会继续让我超过内存限制。

我尝试使用以下gradle.properties配置Gradle

org.gradle.jvmargs=-Xmx512m -XX:MaxPermSize=512m

然而,第一个过程仍在使用4gigs。这是使用转储。

  PID  RSS     %CPU COMMAND
  5663 4360612 60.0 /usr/lib/jvm/jdk1.7.0/bin/java -javaagent:/home/ubuntu/.gradle/caches/modules-2/files-2.1/com.newrelic.agent.android/class-rewriter/3.407.0/6f7f95a36369f76b739461331202406fa1f519c7/class-rewriter-3.407.0.jar -Dandroid.assets=/home/ubuntu/Android/app/build/intermediates/assets/debug -Dandroid.manifest=/home/ubuntu/Android/app/build/intermediates/manifests/debug/AndroidManifest.xml -Dandroid.resources=/home/ubuntu/Android/app/build/intermediates/res/debug -Djava.security.manager=jarjar.org.gradle.process.internal.child.BootstrapSecurityManager -Dfile.encoding=UTF-8 -ea -cp /home/ubuntu/.gradle/caches/1.10/workerMain/gradle-worker.jar jarjar.org.gradle.process.internal.launcher.GradleWorkerMain
  5277 395868  67.3 /usr/lib/jvm/jdk1.7.0/bin/java -XX:MaxPermSize=512m -Xmx512m -Dfile.encoding=UTF-8 -cp /usr/local/gradle-1.10/lib/gradle-launcher-1.10.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 1.10 /home/ubuntu/.gradle/daemon 120000 99e43642-9137-411a-ba62-f82d964a2f89 -XX:MaxPermSize=512m -Xmx512m -Dfile.encoding=UTF-8
  5237 305076  4.3  /usr/lib/jvm/jdk1.7.0/bin/java -Dorg.gradle.appname=gradle -classpath /usr/local/gradle-1.10/lib/gradle-launcher-1.10.jar org.gradle.launcher.GradleMain --info --project-dir /home/ubuntu/Android/app test

有什么方法可以配置第一个进程不使用这么多内存?此外,如果此环境中没有可用的交换空间,限制内存使用量会导致OOM错误吗?

1 个答案:

答案 0 :(得分:4)

可以通过以下方式配置测试JVM的内存限制:

tasks.withType(Test) {
    maxHeapSize = "512m"
    jvmArgs "-XX:MaxPermSize=512m"
}

但是,这是否可以解决这个问题还有待观察。