是否可以解分配/重置/压缩由ANTLR分配的内存?
我已经使用了ParserATNSimulator.clearDFA(),但是仍然分配了一些巨大的对象(例如,ArrayPredictionContext、SingletonPredictionContext)。
我的程序交替进行解析和计算阶段。在两个解析阶段之间,我希望减少ANTLR的内存占用。
发布于 2015-03-03 22:58:55
如果我替换解析器和lexer的缓存,这些数据结构和一些静态字段之间就没有更多的路径。因此,垃圾收集器可以收集它们。
lexer.setInterpreter(new LexerATNSimulator(lexer, lexer.getATN(), lexer.getInterpreter().decisionToDFA, new PredictionContextCache()));
parser.setInterpreter(new ParserATNSimulator(parser, parser.getATN(), parser.getInterpreter().decisionToDFA, new PredictionContextCache()));发布于 2015-02-25 18:08:06
有意思的。答案是否定的,我现在会说。我将在https://github.com/antlr/antlr4上添加一个问题。
https://stackoverflow.com/questions/28724334
复制相似问题