ANTLR4内存清理
ANTLR4 memory cleanup
是否可以desallocate/reset/compressANTLR分配的内存?
我已经使用了ParserATNSimulator.clearDFA()
,但仍然分配了一些巨大的对象(例如,ArrayPredictionContext
、SingletonPredictionContext
)。
我的程序交替进行解析和计算阶段。在两个解析阶段之间,我想减少 ANTLR 的内存占用。
有意思。答案是否定的,我现在会说。我将在 https://github.com/antlr/antlr4.
添加问题
如果我替换解析器和词法分析器的缓存,这些数据结构和一些静态字段之间就没有路径了。因此垃圾收集器可以收集它们。
lexer.setInterpreter(new LexerATNSimulator(lexer, lexer.getATN(), lexer.getInterpreter().decisionToDFA, new PredictionContextCache()));
parser.setInterpreter(new ParserATNSimulator(parser, parser.getATN(), parser.getInterpreter().decisionToDFA, new PredictionContextCache()));
是否可以desallocate/reset/compressANTLR分配的内存?
我已经使用了ParserATNSimulator.clearDFA()
,但仍然分配了一些巨大的对象(例如,ArrayPredictionContext
、SingletonPredictionContext
)。
我的程序交替进行解析和计算阶段。在两个解析阶段之间,我想减少 ANTLR 的内存占用。
有意思。答案是否定的,我现在会说。我将在 https://github.com/antlr/antlr4.
添加问题如果我替换解析器和词法分析器的缓存,这些数据结构和一些静态字段之间就没有路径了。因此垃圾收集器可以收集它们。
lexer.setInterpreter(new LexerATNSimulator(lexer, lexer.getATN(), lexer.getInterpreter().decisionToDFA, new PredictionContextCache()));
parser.setInterpreter(new ParserATNSimulator(parser, parser.getATN(), parser.getInterpreter().decisionToDFA, new PredictionContextCache()));