我目前正在运行单声道(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>
有谁知道如何解决这个问题?
答案 0 :(得分:3)
如果您正在使用单声道2.10.8或更高版本,您可以尝试使用更高级的sgen垃圾收集器执行单声道应用程序,该收集器不像默认GC那样保守。
它解决了我遇到的内存泄漏问题,也许你遇到了相关的问题。
要使用sgen运行,您必须确保安装了mono-runtime-sgen,然后在执行程序时使用以下命令行参数:
mono --gc = sgen YourProgram.exe