Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

sonar findbugs heap size

i am new to sonar. i am running sonar from Jenkins with sonar pulgin.

When i am running from jenkins i am getting out of memory exception at findbugs

below is the error:

 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

my sonar version is 2.13

when i am increasing the jvm options in Jenkins sonar plugin to 1280 it is shown below error:

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`
like image 872
vinod Avatar asked Apr 11 '12 10:04

vinod


1 Answers

Yes, the sonar findbugs executor can use a lot of RAM if the analyzed code base is large.

You will have to increase not only the heap size available to the JVM, but also "MaxPermSize" and "ReservedCodeCacheSize" (at least for the Java Hotspot VM). The JVM options must be set on the JVM which is actually executing the FindBugs sonar executor. So probably not the Jenkins VM, but the one that Jenkins starts for the job.

Here's an example for a 64bit system:

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

On a 32bit system, which I am assuming you are using, you would go for lower values, such as:

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

Also, if Jenkins won't accept the JVM options, you can try running sonar using the sonar ant task from Jenkins. (That's what I am doing, and I can set as much memory as I like.)

like image 70
barfuin Avatar answered Sep 30 '22 23:09

barfuin