Java 使用Gradle运行单元测试时,最大堆大小在哪里设置?
我的OOM单元测试失败,我想知道为什么我需要手动允许更大的Java 使用Gradle运行单元测试时,最大堆大小在哪里设置?,java,gradle,junit,Java,Gradle,Junit,我的OOM单元测试失败,我想知道为什么我需要手动允许更大的maxHeapSize这样: test { maxHeapSize = '4G' } 我假设最大堆没有上限,在GradleAPI源代码中找不到任何东西来证明我错了。但是,使用--info运行gradle清楚地揭示了以下情况: Starting process 'Gradle Test Executor 427'. Working directory: [project-dir] Command: /Library/Java/Java
maxHeapSize
这样:
test {
maxHeapSize = '4G'
}
我假设最大堆没有上限,在GradleAPI源代码中找不到任何东西来证明我错了。但是,使用--info
运行gradle清楚地揭示了以下情况:
Starting process 'Gradle Test Executor 427'. Working directory: [project-dir] Command: /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/bin/java -Djava.security.manager=worker.org.gradle.process.internal.worker.child.BootstrapSecurityManager -Dorg.gradle.native=false -javaagent:build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/jacocoagent.jar=destfile=build/jacoco/test.exec,append=true,inclnolocationclasses=false,dumponexit=true,output=file,jmx=false -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -ea -cp /Users/[user]/.gradle/caches/6.4/workerMain/gradle-worker.jar worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 427'
我的问题是上面的-Xmx512m
来自哪里
接下来,是否有一种方法可以允许无限的最大堆,这是一种完全不合理的做法
中设置了
512m
默认值的可能重复项512m
是一个折衷方案,适用于中小型项目,并且可以同时运行多个工人。根据报告:
默认情况下限制工作进程的内存
我们的编译、测试等工作人员没有默认值
内存设置直到现在,这意味着我们将使用
JVM给出的默认值是系统内存的1/4
在大多数情况下。这是太多时,运行与高
工人人数。将其限制在256m就足够了
中小型项目。更大的项目将不得不进行
调整此值
接下来,是否有一种方法可以允许无限的最大堆,这是一种完全不合理的做法
在撰写本文时,我还不知道有哪种JVM实现允许无限内存,老实说,我认为这是不可取的,因为它会大大降低系统的速度。哎哟,这一直在我眼前。非常感谢你。