Java 运行声纳运行器时超出 GC 开销限制
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24362982/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
GC overhead Limit exceeded while running sonar runner
提问by Yasin
I am getting OutOfMemoryException while performing sonar analysis on my project. Below is the stack trace:
我在对我的项目执行声纳分析时收到 OutOfMemoryException。下面是堆栈跟踪:
14:55:55.433 DEBUG - Release semaphore on project : org.sonar.api.resources.Project@5a7b5cb8[id=1,key=myProj_web,qualifier=TRK], with key batch-myProj_web
14:55:55.711 DEBUG - To prevent a memory leak, the JDBC Driver [com.mysql.jdbc.Driver] has been forcibly deregistered
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 12:48.979s
Final Memory: 33M/910M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
at org.sonar.runner.impl.BatchLauncher.delegateExecution(BatchLauncher.java:91)
at org.sonar.runner.impl.BatchLauncher.run(BatchLauncher.java:75)
at java.security.AccessController.doPrivileged(Native Method)
at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
at org.sonar.runner.api.Runner.execute(Runner.java:100)
at org.sonar.runner.Main.executeTask(Main.java:70)
at org.sonar.runner.Main.execute(Main.java:59)
at org.sonar.runner.Main.main(Main.java:53)
Caused by: org.sonar.api.utils.SonarException: Can not execute Findbugs
at org.sonar.plugins.findbugs.FindbugsExecutor.execute(FindbugsExecutor.java:154)
at org.sonar.plugins.findbugs.FindbugsSensor.analyse(FindbugsSensor.java:59)
at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:79)
at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:70)
at org.sonar.batch.phases.PhaseExecutor.execute(PhaseExecutor.java:131)
at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:178)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:199)
at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:194)
at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:187)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:56)
at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:44)
at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:82)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
at org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapContainer.java:175)
at org.sonar.batch.bootstrap.BootstrapContainer.doAfterStart(BootstrapContainer.java:163)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
at org.sonar.batch.bootstrapper.Batch.startBatch(Batch.java:92)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:74)
at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.sonar.runner.impl.BatchLauncher.delegateExecution(BatchLauncher.java:87)
... 9 more
Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:232)
at java.util.concurrent.FutureTask.get(FutureTask.java:91)
at org.sonar.plugins.findbugs.FindbugsExecutor.execute(FindbugsExecutor.java:146)
... 38 more
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
at edu.umd.cs.findbugs.util.Strings.escapeXml(Strings.java:167)
at edu.umd.cs.findbugs.xml.XMLAttributeList.getQuotedAttributeValue(XMLAttributeList.java:132)
at edu.umd.cs.findbugs.xml.XMLAttributeList.toString(XMLAttributeList.java:111)
at edu.umd.cs.findbugs.xml.OutputStreamXMLOutput.openTag(OutputStreamXMLOutput.java:112)
at edu.umd.cs.findbugs.SourceLineAnnotation.writeXML(SourceLineAnnotation.java:887)
at edu.umd.cs.findbugs.ClassAnnotation.writeXML(ClassAnnotation.java:192)
at edu.umd.cs.findbugs.BugInstance.writeXML(BugInstance.java:2292)
at edu.umd.cs.findbugs.SortedBugCollection.writeXML(SortedBugCollection.java:576)
at edu.umd.cs.findbugs.SortedBugCollection.writeXML(SortedBugCollection.java:497)
at edu.umd.cs.findbugs.XMLBugReporter.finish(XMLBugReporter.java:46)
at edu.umd.cs.findbugs.DelegatingBugReporter.finish(DelegatingBugReporter.java:81)
at edu.umd.cs.findbugs.DelegatingBugReporter.finish(DelegatingBugReporter.java:81)
at edu.umd.cs.findbugs.DelegatingBugReporter.finish(DelegatingBugReporter.java:81)
at edu.umd.cs.findbugs.FindBugs2.analyzeApplication(FindBugs2.java:1256)
at edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:282)
at org.sonar.plugins.findbugs.FindbugsExecutor$FindbugsTask.call(FindbugsExecutor.java:201)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
I tried increasing memory but the problem still exists. I have used following options while running sonar: set SONAR_RUNNER_OPTS=-Xmx1024m -XX:MaxPermSize=512m
我尝试增加内存,但问题仍然存在。我在运行声纳时使用了以下选项:set SONAR_RUNNER_OPTS=-Xmx1024m -XX:MaxPermSize=512m
采纳答案by Yasin
OK, after doing some more research I got it right. I had to do some setup, though.
好的,在做了更多的研究之后,我做对了。不过,我必须做一些设置。
- Skip the package design analysis,
sonar.skipPackageDesign=true
- Remove the entries for lib/test directory in your project's properties file
- Give some more memory
set SONAR_RUNNER_OPTS=-Xmx1536m -XX:MaxPermSize=512m
- Optionally you can disable design analysis by using
sonar.skipDesign=true
- Restart SonarQube services and you should be good now :)
- 跳过包装设计分析,
sonar.skipPackageDesign=true
- 删除项目属性文件中 lib/test 目录的条目
- 多留点记忆
set SONAR_RUNNER_OPTS=-Xmx1536m -XX:MaxPermSize=512m
- (可选)您可以使用以下命令禁用设计分析
sonar.skipDesign=true
- 重新启动 SonarQube 服务,你现在应该好了:)
To read more, please refer this post
要阅读更多内容,请参阅此帖子