声纳的分析给出了内存不足的错误,我应该增加蚂蚁或声纳服务器的JVM堆空间?(Sonar analys

2019-07-18 01:35发布

我在分析声纳大型项目,并得到了以下错误:

[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)

我应该增加跑的声纳服务器的Java堆空间,或执行声纳工作Ant目标?

Answer 1:

正如你可以从堆栈跟踪看到,蚂蚁开始声纳分析,所以你应该增加VM的堆空间的蚂蚁运行英寸

这是一个非常类似的问题BTW: 如何提高声纳Java堆空间

命令行蚂蚁用法

从另一个问题的答案由Mark O'Connor的报价:

声纳ANT任务,所以你需要使用标准的ANT环境参数设置JVM堆执行作为ANT的一部分。 例如:

出口ANT_OPTS = -Xmx256m

备注:

  • 这是一个用于Linux,适用于Windows,使用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参数=512米

对于IntelliJ IDEA的

本次论坛主题是有用的: ANT构建Java堆空间

从答案引用:

请确保您在正确的地方增加了堆。 您需要点击IDEA的Ant工具窗口和编辑“最大堆大小(MB)”字段出现“属性”按钮。

此外,从IntelliJ IDEA的页面: 增加内存堆

从文章引述如下:

构建过程的内存堆是独立的IntelliJ IDEA内存堆,并发布了构建过程完成后。

要增加内存堆:打开生成文件属性对话框。 在最大堆大小字段,键入所需的内存量。

对于詹金斯持续集成和Ant构建

这个问题是非常有用的: 如何使用Java Options在詹金斯Ant构建工具来设置ANT_OPTS

从答案引用:

设置Java选项-Xmx512m -XX:MaxPermSize参数=256米只是没了ANT_OPTS =

Maven的构建 ,本文使用的: 如何提高行家heapspace哈德森建立

  1. 导航到您的哈德森的工作,
  2. 单击配置
  3. 向下滚动到Build部分 ,和
  4. 单击高级按钮。
  5. 进入MAVEN_OPTS这样的:-Xmx512m -XX:MaxPermSize参数=128米


文章来源: Sonar analysis gives out of memory error, should I increase JVM heap space of Ant or Sonar server?