use*_*582 7 ant jvm heap-memory jenkins sonarqube
我正在分析Sonar中的一个大项目并得到以下错误:
[sonar:sonar] 03:55:39.511 INFO p.PhasesTimeProfiler - Execute decorators...
BUILD FAILED
[...]
[...] java.lang.OutOfMemoryError: Java heap space
at org.sonar.batch.index.MeasurePersister.model(MeasurePersister.java:127)
at org.sonar.batch.index.MeasurePersister.getMeasuresToSave(MeasurePersister.java:117)
at org.sonar.batch.index.MeasurePersister.dump(MeasurePersister.java:70)
at org.sonar.batch.index.DefaultPersistenceManager.dump(DefaultPersistenceManager.java:63)
at org.sonar.batch.phases.Phases.execute(Phases.java:95)
at org.sonar.batch.bootstrap.ProjectModule.doStart(ProjectModule.java:139)
at org.sonar.batch.bootstrap.Module.start(Module.java:83)
at org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:131)
at org.sonar.batch.bootstrap.BatchModule.doStart(BatchModule.java:121)
at org.sonar.batch.bootstrap.Module.start(Module.java:83)
at org.sonar.batch.bootstrap.BootstrapModule.doStart(BootstrapModule.java:121)
at org.sonar.batch.bootstrap.Module.start(Module.java:83)
at org.sonar.batch.Batch.execute(Batch.java:104)
at org.sonar.ant.Launcher.execute(Launcher.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.sonar.ant.SonarTask.delegateExecution(SonarTask.java:244)
at org.sonar.ant.SonarTask.execute(SonarTask.java:193)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:392)
at org.apache.tools.ant.Target.performTasks(Target.java:413)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:442)
Run Code Online (Sandbox Code Playgroud)
我应该增加正在运行的Sonar服务器的Java堆空间,还是执行Sonar作业的Ant目标?
ppe*_*rka 13
从堆栈跟踪中可以看出,Ant启动了Sonar分析,因此您应该增加Ant运行的VM的堆空间.
这是一个非常相似的问题BTW:如何增加Sonar Java堆空间
对于命令行Ant使用
引用Mark O'Connor关于另一个问题的答案:
Sonar ANT任务作为ANT的一部分执行,因此您需要使用标准ANT环境参数设置JVM堆.例如:
export ANT_OPTS = -Xmx256m
备注:
set
命令Permgen
,使用-XX:MaxPermSize=<desired amount>
这是一个更类似的问题:构建失败java.lang.OutOfMemoryError:Java堆空间
对于Eclipse IDE
引自文章http://soenkerohde.com/2008/06/change-eclipse-ant-settings-when-you-run-out-of-memory/
- 在Eclipse打开菜单中:运行 - > 外部工具 - > 打开外部工具对话框 ...
- 选择要在左侧更改的构建脚本
- 选择右侧的JRE选项卡
- 将以下内容设置为VM参数:-Xms768m -Xmx1024m -XX:MaxPermSize = 512m
对于IntelliJ Idea
这个论坛帖子很有用:ANT构建java堆空间
引用答案:
请确保您在正确的位置增加堆.您需要在IDEA的Ant工具窗口中单击"属性"按钮,然后在那里编辑"最大堆大小(Mb)"字段.
此外,从IntelliJ Idea页面:增加内存堆
从文章引用:
构建过程的内存堆独立于IntelliJ IDEA内存堆,并在构建过程完成后释放.
要增加内存堆:打开" 生成文件属性"对话框.在" 最大堆大小"字段中,键入所需的内存量.
对于Jenkins持续集成和Ant构建
这个问题很有用:如何使用Java Options
jenkins ant构建工具来设置ANT_OPTS
引用答案:
仅在没有ANT_OPTS =的情况下将JAVA OPTIONS设置为-Xmx512m -XX:MaxPermSize = 256m
对于Maven构建,本文是有用的:如何在hudson构建中增加maven堆空间
- 导航到你的哈德森工作,
- 单击配置,
- 向下滚动到Build部分,然后
- 单击" 高级"按钮.
- 在MAVEN_OPTS中输入:-Xmx512m -XX:MaxPermSize = 128m
归档时间: |
|
查看次数: |
18344 次 |
最近记录: |