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

时间:2016-12-08 12:52:38

标签: java memory-leaks out-of-memory javac

我最近在我的java项目中进行了大量的代码更改(由于第三方库升级)。 这导致我的蚂蚁编译任务失去记忆(堆空间 - 老一代)。

我之前使用的是1G的Xmx,我现在必须使用2G才能成功编译。 我已经描述了javac过程,但我没有太多的洞察力。 我已经启用了详细输出,并且在加载类时发现它内存不足。

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

javac] [loading ZipFileIndexFileObject[C:\Dev\jdks\jdk7\jre\lib\rt.jar(javax/xml/bind/annotation/XmlAnyElement.class)]]
javac] [loading ZipFileIndexFileObject[C:\Dev\jdks\jdk7\jre\lib\rt.jar(javax/xml/bind/annotation/XmlAttribute.class)]]
javac] [loading ZipFileIndexFileObject[C:\Dev\jdks\jdk7\jre\lib\rt.jar(javax/xml/bind/annotation/XmlSchemaType.class)]]
javac] [loading ZipFileIndexFileObject[C:\Dev\jdks\jdk7\jre\lib\rt.jar(javax/xml/bind/annotation/XmlElementDecl.class)]]
javac] [loading ZipFileIndexFileObject[C:\Dev\jdks\jdk7\jre\lib\rt.jar(javax/xml/bind/annotation/XmlSeeAlso.class)]]

javac] [加载ZipFileIndexFileObject [C:\ Dev \ jdks \ jdk7 \ jre \ lib \ rt.jar(javax / xml / bind / annotation / XmlElement.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)

1 个答案:

答案 0 :(得分:1)

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

代码越复杂,它使用的内存就越多。这不太可能是一个错误,或者因为你使用了错误的JAR。

我会确保您使用最新的更新,以防这是一个已修复的问题,但这不太可能有所作为。