2013-01-10 11 views
7

Ich bin ein großes Projekt in Sonar zu analysieren und die folgende Fehlermeldung erhalten:Sonar-Analyse führt zu einem Speicherfehler, sollte ich den JVM-Heap-Speicher des Ant- oder Sonar-Servers erhöhen?

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

Soll ich den Java-Heap-Speicher des laufenden Sonar-Servers erhöhen oder das Ant-Ziel des Sonar Job ausführt?

+0

Welche IDE verwenden Sie? – ppeterka

+0

Ich benutze Jenkins, um das Ant Ziel (Sonar) – user1340582

+0

auszuführen Oh, OK, das ist die Möglichkeit, die ich ausgelassen habe ... – ppeterka

Antwort

13

Wie Sie aus dem Stack-Trace sehen können, beginnt der Ant die Sonar-Analyse, so dass Sie den Heap-Speicher für die VM erhöhen sollten den Ant in läuft

Dies ist eine sehr ähnliche Frage BTW:. How to increase Sonar Java heap space

Ant Kommandozeilennutzung

Zitat aus der Antwort von Mark O'Connor auf der anderen Frage:

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

Bemerkungen:

  • dies für Linux ist, für Windows, verwenden Sie den Befehl set
  • dies ausschließlich für den Heap-Speicher ist. für Permgen, -XX:MaxPermSize=<desired amount>

Dies ist eine noch ähnliche Frage zu verwenden ist: Build Failed java.lang.OutOfMemoryError: Java heap space

für Eclipse IDE

Zitat aus dem Artikel 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

für IntelliJ Idea

Dieses Forum Thread ist nützlich: ANT build java heap space

Zitat aus den Antworten:

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.

Auch aus der IntelliJ Idea Seite: Increasing Memory Heap

Zitat aus dem Artikel:

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.

Für Jenkins Con kontinuierliche Integration und Ant bauen

Diese Frage ist nützlich: How to use the Java Options in jenkins ant build tool to set ANT_OPTS

Zitat aus der Antwort:

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

Für Maven baut, ist dieser Artikel für die Verwendung: 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
+0

Was ist für Mac ..? – Mansur