首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GradleWorkerMain OutOfMemoryError

GradleWorkerMain OutOfMemoryError
EN

Stack Overflow用户
提问于 2013-12-10 09:05:13
回答 1查看 14.2K关注 0票数 13

我正在尝试基于蚂蚁的(Netbeans )项目,并找到奇怪的分级行为。我用分析器做了一些观察,得到了下一个结果。

环境配置

代码语言:javascript
复制
Gradle 1.9
Build time:   2013-11-19 08:20:02 UTC
Build number: none
Revision:     7970ec3503b4f5767ee1c1c69f8b4186c4763e3d

Groovy:       1.8.6
Ant:          Apache Ant(TM) version 1.9.2 compiled on July 8 2013
Ivy:          2.2.0
JVM:          1.7.0_45 (Oracle Corporation 24.45-b08)
OS:           Linux 2.6.32-431.el6.x86_64 amd64

$ echo $GRADLE_OPTS
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -Xms256m -Xmx2048m
$ echo $ANT_OPTS
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -Xms256m -Xmx2048m
  • build.gradle -包含蚂蚁任务的导入(干净、生成、单元测试)
  • settings.gradle

使用gradle运行导入的ant junit测试任务

为此,Gradle叉分离jvm,并使用不同的Xmx值运行JUnitTestRunner,忽略$GRADLE_OPTS和$ANT_OPTS值。

不知道gradle如何为每个JUnitTestRunner ant任务定义Xmx大小。它可以正常工作,作为每个任务期间的GC。所有模块的所有单元测试都通过,没有错误。

运行相同模块的gradle构建任务

Gradle知道以前的构建结果,并立即开始对未经测试的模块进行junit测试。您可能会看到输出这里!Gradle叉分离jvm (忽略$GRADLE_OPTS值)并运行GradleWorkerMain。这个jvm有1.42GB的Xmx和500 MB立即占用!然后使用内存大小达到1.5GB。那么GC由于未知的原因不能释放内存并抛出

-java.lang.OutOfMemoryError:超过GC开销限制

-控制台日志

问题

  • 为什么ant任务最大Xmx大小540 MB足够测试,而对于GradleWorkerMain 1.5GB是不够的?
  • 我刚开始使用gradle,所以我的build.gradle可能包含了导致GradleWorkerMain奇怪行为的错误。是真的吗?可能的解决办法是什么?
  • 如何为GradleWorkerMain jvm提供更多的Xmx?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-10 10:06:56

若要控制用于分级测试JVM的可用内存数量,请配置相应的Test任务。例如:

代码语言:javascript
复制
test {
    maxHeapSize = "1024m"
    jvmArgs "-XX:MaxPermSize=256m"
}
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20490105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档