在ant
中运行构建时出现以下错误buildcallbacks.xml:39: org.sonar.runner.RunnerException: java.lang.OutOfMemoryError: PermGen space
这是构建中声纳运行代码的部分。
有没有办法让我知道这个错误的确切位置,即声纳服务器或客户端等?
这是我的buildcallbanks.xml的第39行
<sonar:sonar />
编辑:我已经尝试从Sonar中的wrapper.conf增加permsize,无论我设置多高,我仍然会遇到同样的问题。我还得错过什么?
答案 0 :(得分:7)
我实际上回过头来看看你之后 - 它仍然失败了。 你快到了,但我发现了两件事:
所以现在似乎正在进行处理的设置是:
ANT_OPTS="-Xmx1024m -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=512m"
<强>更新强> 多年以后,我再次重新访问了这个问题,因为问题再次发生。你实际上并不需要弄乱GC设置,只需要内存。事实上正确的选择是:
ANT_OPTS="-Xmx2G -XX:MaxPermSize=1G"
显然,您可以调整内存值以适合您的机器。
希望这有助于其他人。
答案 1 :(得分:1)
此错误不是由任何特定代码行引起的,因此尝试找到它是没有意义的。您只需重新配置ant使用的Java运行时,以便增加PermGen空间的限制。 This wiki page记录了如何实现这一目标。基本上,您设置ANT_OPTS
环境变量。
答案 2 :(得分:0)
尝试增加permgen大小,而不是增加堆大小。您可以使用
执行此操作ANT_OPTS=-XX:MaxPermSize=128m
默认大小为64 MB,因此此设置应使可用的最大内存加倍。
PermGen内存用于运行JVM时不经常更改的内容,如类定义。
答案 3 :(得分:0)
增加声纳服务器上的permspace似乎没有任何影响。
这个问题似乎是由于在Bamboo的'assembly'阶段运行了太多的ant目标引起的。我现在正在运行'清理所有生产',然后调用ant声纳插件.jar。
似乎这些课程本来应该没有被卸载。使用以下JVM参数修复此问题:-XX:+ CMSClassUnloadingEnabled