如何在Javac任务中找到内存泄漏



我最近在我的Java项目中进行了大量代码更改(由于第三方库的升级)。这导致了我的蚂蚁汇编任务,以进行淘汰(堆空间 - 旧一代)。

i早些时候使用了1G的XMX,我现在必须使用2G进行成功编译。我已经介绍了Javac过程,但是我没有太多见解。我已经启用了详细的输出,并且发现它在加载类时不在内存中。

有没有办法查找Javac程序中是否有内存泄漏?

javac] [loading ZipFileIndexFileObject[C:Devjdksjdk7jrelibrt.jar(javax/xml/bind/annotation/XmlAnyElement.class)]]
javac] [loading ZipFileIndexFileObject[C:Devjdksjdk7jrelibrt.jar(javax/xml/bind/annotation/XmlAttribute.class)]]
javac] [loading ZipFileIndexFileObject[C:Devjdksjdk7jrelibrt.jar(javax/xml/bind/annotation/XmlSchemaType.class)]]
javac] [loading ZipFileIndexFileObject[C:Devjdksjdk7jrelibrt.jar(javax/xml/bind/annotation/XmlElementDecl.class)]]
javac] [loading ZipFileIndexFileObject[C:Devjdksjdk7jrelibrt.jar(javax/xml/bind/annotation/XmlSeeAlso.class)]]

javac] [加载zipfileIndexFileObject [c: dev jdks jdk7 jre lib lib lib rt.jar(javax/xml/xml/bind/notation/notation/xmlelemt.class.class.class)]]

)] )
javac]
javac]
javac] The system is out of resources.
javac] Consult the following stack trace for details.
javac] java.lang.OutOfMemoryError: Java heap space
javac]     at com.sun.tools.javac.code.Scope$ImportScope.makeEntry(Scope.java:515)
javac]     at com.sun.tools.javac.code.Scope.enter(Scope.java:219)
javac]     at com.sun.tools.javac.code.Scope.enter(Scope.java:201)
javac]     at com.sun.tools.javac.code.Scope$StarImportScope.importAll(Scope.java:540)
javac]     at com.sun.tools.javac.comp.MemberEnter.importAll(MemberEnter.java:147)
javac]     at com.sun.tools.javac.comp.MemberEnter.visitTopLevel(MemberEnter.java:522)
javac]     at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:459)
javac]     at com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:401)
javac]     at com.sun.tools.javac.comp.MemberEnter.complete(MemberEnter.java:876)
javac]     at com.sun.tools.javac.code.Symbol.complete(Symbol.java:421)
javac]     at com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:821)
javac]     at com.sun.tools.javac.comp.Enter.complete(Enter.java:491)
javac]     at com.sun.tools.javac.comp.Enter.main(Enter.java:469)
javac]     at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:929)
javac]     at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:824)
javac]     at com.sun.tools.javac.main.Main.compile(Main.java:439)

您的javac很可能只需要比默认值更多的内存。

代码越复杂,它使用的内存越多。这不太可能是一个错误,或者是因为您使用的罐子正在使用错误。

我会确保您正在使用最新更新,以防它已解决,但这不太可能有所作为。

最新更新