2012-04-11 13 views
5

Ich bin neu Sonar. Ich betreibe Sonar von Jenkins mit Sonar Pulgin. Sonar Findbugs Heap Größe

Wenn ich von jenkins leite ich

unten bei findbugs out of memory Ausnahme bin immer der Fehler:

Out of memory 
Total memory: 1037M 
free memory: 30M 
Analyzed: D:\Victor\autocreated\webapp\WEB-INF\classes 
    Aux: C:\DOCUME~1\NADBHA~1\LOCALS~1\Temp\findbugs4165854405681394173.jar 
    Aux: C:\DOCUME~1\NADBHA~1\LOCALS~1\Temp\findbugs4688505485649811865.jar 
Total time: 2:04:49.155s 
Final Memory: 358M/989M 
Exception in thread "main" org.sonar.batch.bootstrapper.BootstrapException: org.sonar.api.utils.SonarException: Can not execute Findbugs 
    at org.sonar.runner.Runner.delegateExecution(Runner.java:189) 
    at org.sonar.runner.Runner.execute(Runner.java:78) 
    at org.sonar.runner.Main.main(Main.java:61) 
Caused by: org.sonar.api.utils.SonarException: Can not execute Findbugs 
    at org.sonar.plugins.findbugs.FindbugsExecutor.execute(FindbugsExecutor.java:120) 
    at org.sonar.plugins.findbugs.FindbugsSensor.analyse(FindbugsSensor.java:58) 
    at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:64) 
    at org.sonar.batch.phases.Phases.execute(Phases.java:93) 
    at org.sonar.batch.bootstrap.ProjectModule.doStart(ProjectModule.java:143) 
    at org.sonar.batch.bootstrap.Module.start(Module.java:83) 
    at org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:111) 
    at org.sonar.batch.bootstrap.BatchModule.doStart(BatchModule.java:101) 
    at org.sonar.batch.bootstrap.Module.start(Module.java:83) 
    at org.sonar.batch.bootstrap.BootstrapModule.doStart(BootstrapModule.java:102) 
    at org.sonar.batch.bootstrap.Module.start(Module.java:83) 
    at org.sonar.batch.Batch.execute(Batch.java:100) 
    at org.sonar.runner.Launcher.executeBatch(Launcher.java:65) 
    at org.sonar.runner.Launcher.execute(Launcher.java:58) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.sonar.runner.Runner.delegateExecution(Runner.java:186) 
    ... 2 more 
Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space 
    at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source) 
    at java.util.concurrent.FutureTask.get(Unknown Source) 
    at org.sonar.plugins.findbugs.FindbugsExecutor.execute(FindbugsExecutor.java:112) 
    ... 20 more 
Caused by: java.lang.OutOfMemoryError: Java heap space 

meine Sonar-Version ist 2.13

wenn ich die Jvm bin zunehmende Optionen in Jenkins Sonar-Plugin zu 1280 ist es unter Fehler gezeigt:

+0

Wie viel Speicher hat Ihre Maschine? 1280 scheint mehr als die verfügbaren 1037M – oers

+0

mein System Ram ist 3 GB. – vinod

+0

Können Sie die von Ihnen festgelegten JVM-Optionen posten? –

Antwort

5

Ja, der Sonar-Findbugs-Executor kann viel RAM verwenden, wenn die analysierte Codebasis groß ist.

Sie müssen nicht nur die verfügbare Heap-Größe für die JVM erhöhen, sondern auch "MaxPermSize" und "ReservedCodeCacheSize" (zumindest für die Java Hotspot-VM). Die JVM-Optionen müssen in der JVM festgelegt werden, die den Sonar-Executor FindBugs ausführt. Also wahrscheinlich nicht die Jenkins VM, sondern diejenige, die Jenkins für den Job startet.

Hier ist ein Beispiel für ein 64-Bit-System:

-Xmx3062m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m 

Auf einem 32-Bit-System, das ich Sie verwenden gehe davon aus, Sie niedrigere Werte, wie gehen würden: Auch

-Xmx1536m -XX:MaxPermSize=384m -XX:ReservedCodeCacheSize=128m 

Wenn Jenkins die JVM-Optionen nicht akzeptiert, können Sie Sonar mit der Sonar-Ant-Aufgabe von Jenkins ausführen. (Das ist, was ich tue, und ich kann so viel Speicher wie ich mag.)

+0

versuchte alle Einstellungen über MAVEN_OPTS von Jenkins, aber leider kein Erfolg :( – gvasquez