C# Antlr4.Runtime中的OutofMemory

C# Antlr4.Runtime中的OutofMemory,c#,antlr4,C#,Antlr4,我最近完成了一个语法来解析Verilog HDL代码。当我尝试使用它时,内存利用率会达到接近10GB的峰值。这是巨大的,使我不可能在32位进程中使用它。我使用的是运行时版本4.5。我尝试升级到4.5.2版,但这引发了一个异常,因为即使在64位模式下,它的内存利用率也达到了8GB。有人能就如何控制内存提出一些建议吗?我做了一个行为奇怪的实验。如果创建解析器实例并解析一些代码,则需要几分钟和几GB的时间才能完成。然后,我创建了一个新的解析器实例,并再次解析代码,它几乎立即以最小的内存完成。这毫无意义

我最近完成了一个语法来解析Verilog HDL代码。当我尝试使用它时,内存利用率会达到接近10GB的峰值。这是巨大的,使我不可能在32位进程中使用它。我使用的是运行时版本4.5。我尝试升级到4.5.2版,但这引发了一个异常,因为即使在64位模式下,它的内存利用率也达到了8GB。有人能就如何控制内存提出一些建议吗?

我做了一个行为奇怪的实验。如果创建解析器实例并解析一些代码,则需要几分钟和几GB的时间才能完成。然后,我创建了一个新的解析器实例,并再次解析代码,它几乎立即以最小的内存完成。这毫无意义。如果我使用的是同一个实例,我相信可能有一些缓存我不知道,但这是两个不同的实例,所以应该没有公共状态。更重要的是,如果我稍微修改一下代码,它会再次快速解析。然而,如果我解析一段全新的代码,它会再次花费很长的时间和更多的内存。如果我能理解这一点,我可能也能理解内存问题。