Sonar分析给出了内存不足错误,我应该增加Ant或Sonar服务器的JVM堆空间吗? [英] Sonar analysis gives out of memory error, should I increase JVM heap space of Ant or Sonar server?

查看:214
本文介绍了Sonar分析给出了内存不足错误,我应该增加Ant或Sonar服务器的JVM堆空间吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在分析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)

我应该增加正在运行的Sonar服务器的java堆空间,还是执行Sonar作业的Ant目标?

解决方案

从堆栈跟踪中可以看到,Ant启动了Sonar分析,因此您应该增加Ant运行所在的VM的堆空间.

这是一个非常相似的问题,顺便说一句:如何增加Sonar Java堆空间

用于命令行Ant用法

引用马克·奥康纳(Mark O'Connor)关于另一个问题的答案:

Sonar ANT任务作为ANT的一部分执行,因此您需要使用标准ANT环境参数设置JVM堆.例如:

导出ANT_OPTS = -Xmx256m

备注:

  • 这是用于Linux的,对于Windows,请使用set命令
  • 这严格用于堆空间.对于Permgen,请使用-XX:MaxPermSize=<desired amount>

这是一个更相似的问题:构建失败的java.lang .OutOfMemoryError:Java堆空间

对于Eclipse IDE

引用文章 ANT构建Java堆空间

引用答案:

请确保您在正确的位置增加了堆.您需要在 IDEA的Ant工具窗口中单击属性"按钮,然后在其中编辑最大堆大小(Mb)" 字段.

此外,在IntelliJ Idea页面上:增加内存堆

文章引用:

构建过程的内存堆独立于IntelliJ IDEA内存堆,并在构建过程完成后释放.

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

用于Jenkins持续集成和Ant构建

这个问题很有用: 解决方案

As you can see from the stack trace, the Ant starts the Sonar analysis, so you should increase the heap space for the VM the Ant runs in.

This is a very similar question BTW: How to increase Sonar Java heap space

For command line Ant usage

Quote from the answer by Mark O'Connor on the other question:

The Sonar ANT task executes as part of ANT so you need to set the JVM heap using the standard ANT environment parameter. For example:

export ANT_OPTS=-Xmx256m

Remarks:

  • this is for Linux, for Windows, use the set command
  • this is strictly for the heap space. for Permgen, use -XX:MaxPermSize=<desired amount>

This is an even more similar question: Build Failed java.lang.OutOfMemoryError: Java heap space

For Eclipse IDE

Quote from the article http://soenkerohde.com/2008/06/change-eclipse-ant-settings-when-you-run-out-of-memory/

  • In Eclipse open menu: Run->External Tools->Open External Tools Dialog
  • Select the build script you want to change on the left
  • Select the JRE tab on the right
  • Set the following as VM arguments: -Xms768m -Xmx1024m -XX:MaxPermSize=512m

For IntelliJ Idea

This forum thread is useful: ANT build java heap space

Quote from the answers:

Please make sure that you increased heap in a correct place. You need to click 'Properties' button in IDEA's Ant tool window and edit 'Maximum heap size (Mb)' field there.

Also, from the IntelliJ Idea page: Increasing Memory Heap

Quote from the article:

The memory heap of the build process is independent of IntelliJ IDEA memory heap, and is released after the build process is complete.

To increase a memory heap: Open the Build File Properties dialog box. In the Maximum heap size field, type the required amount of memory.

For Jenkins Continuous Integration and Ant build

This question is useful : How to use the Java Options in jenkins ant build tool to set ANT_OPTS

Quote from the answer:

Set the JAVA OPTIONS as -Xmx512m -XX:MaxPermSize=256m only without the ANT_OPTS=

For Maven builds, this article is of use: How to increase maven heapspace in hudson builds

  1. Navigate to your hudson job,
  2. click Configure,
  3. scroll down to the Build section, and
  4. click the Advanced button.
  5. Enter this into MAVEN_OPTS: -Xmx512m -XX:MaxPermSize=128m

这篇关于Sonar分析给出了内存不足错误,我应该增加Ant或Sonar服务器的JVM堆空间吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆