sonar findbugs heap size

匿名 (未验证) 提交于 2019-12-03 09:13:36

问题:

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` 

回答1:

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



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!