是否有可能使用mono检测当前的垃圾收集器实现?

问题描述:

我们有一个由第三方提供给我们的组件,当使用boehm GC for mono时泄漏内存,但在使用S-Gen GC时不会泄漏。是否有可能使用mono检测当前的垃圾收集器实现?

当我们启动程序时,我们要警告用户他是否使用了“错误的”GC,并且要做到这一点,我们需要检测使用哪一个。

有没有API来检测这个?

+2

“当使用boehm GC进行单声道时会泄漏内存,但在使用S-Gen GC时不会泄漏” - 对您是如何做出该决定感到好奇的?... –

+0

真的是试错。当我们使用--gc = boehm在单声道2.10上运行它时,内存使用增长无限,直到系统内存不足以分配给进程。使用--gc = sgen时,内存使用在预期值处达到峰值(这与我们将文件读入内存以处理它们时的文件大小相对应),然后在文件处理完成后回退。 – dagvl

+1

听起来像你应该报告的bug ... –

没有特定的API,但可以使用GC.MaxGeneratio:使用Boehm GC时,sgen GC将为0或更高。

+0

这似乎在linux(单声道2.10.2)上工作,但在单声道2.10.5的Windows 7 64bit上,GC.MaxGeneration在boehm和sgen下都返回0。 – dagvl

+0

该版本中的Windows仍然没有sgen端口。 sgen GC将在下一个单声道版本(2.11/2.12)中用于Windows 32。 – lupus

+0

啊,这就解释了这一点。谢谢你的帮助! – dagvl