渐变内存是否随单元测试量的增加而增加?(gradle 1.x)

渐变内存是否随单元测试量的增加而增加?(gradle 1.x),gradle,Gradle,我们的单元测试计数一直在增加,gradle现在开始耗尽内存 * What went wrong: Execution failed for task ':test'. > Java heap space 因此,我们将gradle.properties与jvm参数-Xmx512m一起添加。我想知道为什么gradle在添加单元测试时会使用越来越多的内存。内存使用应该是恒定的,不是吗 这是在这里找到的github项目playorm上 Dean使用Gradle测试任务执行的所有测试都在单独的jv

我们的单元测试计数一直在增加,gradle现在开始耗尽内存

* What went wrong:
Execution failed for task ':test'.
> Java heap space
因此,我们将gradle.properties与jvm参数-Xmx512m一起添加。我想知道为什么gradle在添加单元测试时会使用越来越多的内存。内存使用应该是恒定的,不是吗

这是在这里找到的github项目playorm上


Dean

使用Gradle测试任务执行的所有测试都在单独的jvm中执行,而不是在jvm中执行,Gradle构建是使用。因此,更改gradle.properties中的值并不能解决您的问题。要增加Test-JVM的内存,必须配置测试任务

test{
     maxHeapSize = "512m"
}
希望有帮助

院长问题的答案在评论中


Rene

我也有同样的问题(使用gradle运行测试时占用大量内存)。实际上,我正在测试一个下载pom和jar/war的自定义插件,调试输出似乎记录了下载内容的大部分文件。在执行过程中,我感觉所有这些日志都存储在内存中。我将Gradle 1.7与Java 1.6结合使用。

我对Gradle的内部结构知之甚少,甚至一无所知,但由于Gradle必须在安装过程中搜索所有测试,因此在不同的JVM中调用测试之前,似乎有一定量的静态(和增长)内存使用。是否有大量的测试和测试类?现在已经有110个测试了。确切地说,这并不多,所以为什么随着测试的增加,我开始得到OOM…它应该保持相当高的水平。我调整了gradle内存,而不是测试VM内存,因此每次测试gradle的增长率似乎比我预期的要高一些,尽管这可能很像ant/junit问题,在测试完成之前,日志在内存中的位置或其他什么…不确定,只是感觉有点不对劲。嗯,我所做的修复了这个问题,否则我总是会犯这个错误。我没有试过你的方法,因为我的方法有效。我只有110个测试,所以不确定为什么gradle会有问题,尽管我似乎记得ant的一个问题,并在测试完成之前将日志存储在内存中,我想知道这是否与此相关。你使用的gradle版本是什么?在早期的gradle版本中,我们遇到了具有大量日志输出的测试问题,我们保留了内存。这是在最近的gradle版本中修复的(不记得细节了)嗯,看起来这是1.3。该项目正在使用一个带有某种gradle包装器的gradlew文件,我一直认为它试图检索最新的gradle或其他东西,但1.3已经过时了,不是吗。最新的gradle版本是1.6,1.7已经接近了(rc1已经发布)。简而言之:gradle包装器的目的是在您的vcs中保留要在构建中使用的gradle版本的信息,并在必要时通过下载指定版本来运行它。这在一些monster测试中对我有用。但这在哪里有记录?我觉得需要一个非正式的规则来解决Gradle问题,如果适用的话,必须参考官方文件。如果人们学会自己发现这些东西,而不是依赖于问别人,那会更好。文档确实提到“某些任务”会派生额外的JVM进程,比如测试,但似乎没有说明如何配置这些任务。