Procyon反编译器在反编译大量类文件时会占用大量内存

时间:2019-11-27 07:17:45

标签: java memory-leaks decompiler

我创建了一个Java FX应用程序,以使用procyon反编译器反编译项目中的数百个类文件。随着越来越多的文件被处理,该应用程序的内存使用量在几分钟内达到1GB。我想这与处理字符串和在进程中创建的对象没有被垃圾收集有关吗?

这里是重现此问题的示例代码。

File file1 = new File("file1.class");
File file2 = new File("file2.class");

ExecutorService pool = Executors.newFixedThreadPool(4);
DecompileUtils dcUtils = new DecompileUtils();
for(int i=0;i<500;i++){
    Callable<Integer> task = () -> {

        sourceCode1 = dcUtils.decompile(file1.getAbsolutePath());
        sourceCode2 = dcUtils.decompile(file2.getAbsolutePath());
        //do something with the result
        return 1;
    };
pool.submit(task);

包含用于反编译文件的方法的类:

public class DecompileUtils {

    public String decompile(String source) throws IOException{

        final DecompilerSettings settings = DecompilerSettings.javaDefaults();
        PlainTextOutput pText = new PlainTextOutput();
        Decompiler.decompile(source, pText, settings);
        return pText.toString();
    }
}

编辑:当我浏览procyon源代码时,我注意到创建类 AstBuilder 的对象时,内存使用量突然增加。即当调用 buildAst 方法时,该方法位于 JavaLanguage.class

AstBuilder astBuilder = buildAst(type, options);

0 个答案:

没有答案