避免使用Mono Cryptic GC错误消息

时间:2014-02-23 16:19:02

标签: c# macos mono garbage-collection

我目前正在运行单声道(Mac OSX)程序,该程序读取非常大的数据文件并在聚合后创建摘要统计信息。

神秘的是,我在程序中的某个时刻收到以下错误消息:

Garbage collector could not allocate 16384 bytes of memory for major heap section

我希望有一个OOM例外,或者其他我可以使用的东西。我尝试使用:

增加max-heap-size

export MONO_GC_PARAMS=max-heap-size=4g

但是,它最终告诉我需要将其设置为整数,尝试使用适当的零手动输入值导致执行开始时的gdb转储。

让我烦恼的是,我认为在这个代码的特定部分,它会断开,机器上有16384个字节可用,而且我认为它应该能够GC很好并获得更多内存。 / p>

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

如果您正在使用单声道2.10.8或更高版本,您可以尝试使用更高级的sgen垃圾收集器执行单声道应用程序,该收集器不像默认GC那样保守。

它解决了我遇到的内存泄漏问题,也许你遇到了相关的问题。

要使用sgen运行,您必须确保安装了mono-runtime-sgen,然后在执行程序时使用以下命令行参数:

mono --gc = sgen YourProgram.exe