2016-03-08 214 views
0

此問題與其他類似問題不同,因爲它涉及使用gradle和Jenkins。Jenkins中的gradle compileJava獲取:OutOfMemoryError:超出GC開銷限制

當我在我的開發環境中使用JDK 7構建我的gradle項目時,它建立的很好。當我在Jenkins CI環境中編譯時,compileJava任務失敗。

這裏是堆棧跟蹤:

14:27:34.875 [ERROR] [system.err] The system is out of resources. 
14:27:34.876 [ERROR] [system.err] Consult the following stack trace for details. 
14:27:34.876 [ERROR] [system.err] java.lang.OutOfMemoryError: GC overhead limit exceeded 
14:27:34.876 [ERROR] [system.err] at com.sun.tools.javac.comp.MemberEnter.signature(MemberEnter.java:372) 
14:27:34.876 [ERROR] [system.err] at com.sun.tools.javac.comp.MemberEnter.visitMethodDef(MemberEnter.java:576) 
14:27:34.876 [ERROR] [system.err] at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:669) 
14:27:34.876 [ERROR] [system.err] at com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:401) 
14:27:34.877 [ERROR] [system.err] at com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:413) 
14:27:34.877 [ERROR] [system.err] at com.sun.tools.javac.comp.MemberEnter.finishClass(MemberEnter.java:423) 
14:27:34.877 [ERROR] [system.err] at com.sun.tools.javac.comp.MemberEnter.finish(MemberEnter.java:1066) 
14:27:34.877 [ERROR] [system.err] at com.sun.tools.javac.comp.MemberEnter.complete(MemberEnter.java:1026) 
14:27:34.877 [ERROR] [system.err] at com.sun.tools.javac.code.Symbol.complete(Symbol.java:421) 
14:27:34.877 [ERROR] [system.err] at com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:821) 
14:27:34.877 [ERROR] [system.err] at com.sun.tools.javac.code.Symbol$ClassSymbol.flags(Symbol.java:764) 
14:27:34.877 [ERROR] [system.err] at com.sun.tools.javac.comp.Resolve.isAccessible(Resolve.java:163) 
14:27:34.877 [ERROR] [system.err] at com.sun.tools.javac.comp.Resolve.isAccessible(Resolve.java:158) 
14:27:34.877 [ERROR] [system.err] at com.sun.tools.javac.comp.Resolve.loadClass(Resolve.java:1063) 
14:27:34.878 [ERROR] [system.err] at com.sun.tools.javac.comp.Resolve.findIdentInPackage(Resolve.java:1227) 
14:27:34.878 [ERROR] [system.err] at com.sun.tools.javac.comp.Attr.selectSym(Attr.java:2392) 
14:27:34.878 [ERROR] [system.err] at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:2283) 
14:27:34.878 [ERROR] [system.err] at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1677) 
14:27:34.878 [ERROR] [system.err] at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:431) 
14:27:34.878 [ERROR] [system.err] at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:418) 
14:27:34.878 [ERROR] [system.err] at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:2247) 
14:27:34.878 [ERROR] [system.err] at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1677) 
14:27:34.878 [ERROR] [system.err] at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:431) 
14:27:34.878 [ERROR] [system.err] at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:418) 
14:27:34.878 [ERROR] [system.err] at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:449) 
14:27:34.879 [ERROR] [system.err] at com.sun.tools.javac.comp.Annotate.enterAttributeValue(Annotate.java:214) 
14:27:34.879 [ERROR] [system.err] at com.sun.tools.javac.comp.Annotate.enterAnnotation(Annotate.java:181) 
14:27:34.879 [ERROR] [system.err] at com.sun.tools.javac.comp.MemberEnter.enterAnnotations(MemberEnter.java:783) 
14:27:34.885 [ERROR] [system.err] at com.sun.tools.javac.comp.MemberEnter.access$300(MemberEnter.java:57) 
14:27:34.885 [ERROR] [system.err] at com.sun.tools.javac.comp.MemberEnter$5.enterAnnotation(MemberEnter.java:751) 
14:27:34.885 [ERROR] [system.err] at com.sun.tools.javac.comp.Annotate.flush(Annotate.java:109) 
14:27:34.886 [ERROR] [system.err] at com.sun.tools.javac.comp.Annotate.enterDone(Annotate.java:101) 
14:27:34.886 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':my-platform:compileMySrcJava' 

我曾嘗試在詹金斯設置環境變量使用envInject插件如下:

[EnvInject] - Injecting as environment variables the properties content 
JAVA_OPTIONS=-XX:-UseGCOverheadLimit -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -Xms128m -Xmx2048m 
GRADLE_OPTS=-XX:-UseGCOverheadLimit -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -Xms128m -Xmx2048m 

這似乎沒有任何效果。

有什麼建議嗎?

+0

可能的重複[Error java.lang.OutOfMemoryError:GC overhead overhead exceeded](http://stackoverflow.com/questions/1393486/error-java-lang-outofmemoryerror-gc-overhead-limit-exceeded) – pczeus

回答

0

問題被縮小到JDK1.7.0_79的Jenkins安裝中。雖然我不知道底層問題是什麼,但是當我切換到使用Jenkins安裝JDK1.6.0_43時,問題消失了。並非每個項目都可以靈活地採取相同的解決方法。

相關問題