2012-04-11 14 views
5

sono nuovo al sonar. Sto facendo funzionare il sonar da Jenkins con sonar pulgin.sonar findbugs dimensione heap

Quando sto facendo funzionare da Jenkins io sono sempre fuori eccezione memoria a findbugs

sotto è l'errore:

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 

la mia versione del sonar è 2.13

quando sto aumentando la JVM opzioni nel plugin sonar Jenkins a 1280 è mostrato sotto errore:

Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Error: Could not create the Java Virtual Machine. 
Error: A fatal exception has occurred. Program will exit`enter code here` 
+0

quanta memoria ha la tua macchina? 1280 sembra essere più che il 1037M disponibile – oers

+0

ram del mio sistema è 3 GB. – vinod

+0

Puoi pubblicare le opzioni JVM che hai impostato? –

risposta

5

Sì, l'eseguitore findar del sonar può utilizzare molta RAM se la base di codice analizzata è grande.

È necessario aumentare non solo la dimensione heap disponibile per JVM, ma anche "MaxPermSize" e "ReservedCodeCacheSize" (almeno per Java Hotspot VM). Le opzioni JVM devono essere impostate sulla JVM, che in realtà sta eseguendo l'esecutore del sonar di FindBugs. Quindi probabilmente non è la VM Jenkins, ma quella che Jenkins inizia per il lavoro.

Ecco un esempio di un sistema a 64 bit:

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

Su un sistema a 32 bit, che io parto dal presupposto che si sta utilizzando, si dovrebbe andare per i valori più bassi, come ad esempio:

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

anche , se Jenkins non accetta le opzioni JVM, puoi provare a eseguire il sonar utilizzando l'attività antisegneria di Jenkins. (Questo è quello che sto facendo e posso impostare tutta la memoria che mi piace.)

+0

ha provato tutte le impostazioni tramite MAVEN_OPTS da Jenkins, ma purtroppo non ha avuto successo :( – gvasquez

Problemi correlati