2

我有一个在 Travis (dockerized) 上运行的 maven 构建,它在我的命令行上构建得很好。几天以来,我java.lang.OutOfMemoryError: GC overhead limit exceeded在测试用例中得到了。这总是在 AspectJ 测试用例中发生。

最后一次构建的输出是https://travis-ci.org/dresden-ocl/dresdenocl/builds/53030457

我没有进行任何深入的更改。而且我没有触及应用程序的 AspectJ 部分。我使用 JAVA_OPTS、MAVEN_OPTS 测试了各种东西,甚至在 pom.xml 中为 tycho-surefire-plugin 传递了更多 RAM。没有任何帮助。

我怎样才能摆脱错误并让我的所有测试再次运行?我认为他们改变了导致错误的 Travis 方面的任何内容。

4

3 回答 3

1

GC overhead limit exceeded意味着您的 JVM 将大部分时间花在垃圾收集上,这表明存在一些严重的问题。这无法通过JAVA_OPTSMAVEN_OPTS因为这是一个编程(代码)问题来解决。您可以尝试添加

-XX:-UseGCOverheadLimit

但那不推荐。有关详细信息,请参阅thisthat

于 2015-03-04T12:42:32.100 回答
1

该解决方案在此处说明,并引用了Travis CI 如何提供 MAVEN_OPTS的问题。因此,如果您对提供的 MAVEN_OPTS 值不满意,则无法在容器化环境中构建,因为没有可用的 sudo。

before_install: 
  - sudo rm /etc/mavenrc
  - export M2_HOME=/usr/local/maven
  - export MAVEN_OPTS="-Dmaven.repo.local=$HOME/.m2/repository -Xms1024m -Xmx3072m -XX:PermSize=512m"

此拉取请求将使您对 MAVEN_OPTS 的更改生效。因此,您可以更改 MAVEN_OPTS 而无需使用上述解决方法,因此可以使用 Maven 的容器化构建。

于 2015-05-17T10:08:11.077 回答
1

尝试增加您的堆栈大小,例如通过ulimit -s 82768并重试。要检查限制,请运行ulimit -afree -m释放内存。

于 2015-11-30T19:31:51.650 回答