当我处理一个或几个 java 文件时,我没有问题,但如果 java 的数量在 90 左右,我会得到“ java.lang.OutOfMemoryError: Java heap space
”。我在 Eclipse 中有默认 VM 参数:
java.lang.OutOfMemoryError: -Xms1024M -Xmx3072M.
为每个 java 文件执行此代码。它在倒数第二行抛出异常。
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setResolveBindings(false);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
final String text = buffer.toString();
parser.setSource(text.toCharArray());
final CompilationUnit node = (CompilationUnit) parser.createAST(null);
node.accept( new ASTVisitor() {
@Override
public boolean visit(MethodDeclaration node) {
methodDeclaration.put( node.getName().toString(), node);
return super.visit(node);
}
});
TypeDeclaration types = (TypeDeclaration)node.types().get(0);
List<BodyDeclaration> body = types.bodyDeclarations();
错误:
java.lang.OutOfMemoryError: Java heap space
at org.eclipse.jdt.internal.compiler.parser.Parser.newMessageSend(Parser.java:9191)
at org.eclipse.jdt.internal.compiler.parser.Parser.consumeMethodInvocationName(Parser.java:4630)
at org.eclipse.jdt.internal.compiler.parser.Parser.consumeRule(Parser.java:5922)
at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:9368)
at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:9704)
at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.parseStatements(MethodDeclaration.java:119)
at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.parseMethods(TypeDeclaration.java:831)
at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:539)
at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1194)
at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:801)
at parser.infocaja.WindowParser.process(WindowParser.java:211)
at parser.infocaja.WindowParser.main(WindowParser.java:117)