2011-11-16 52 views
4

我們有一個由第三方提供給我們的組件,當使用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 ... –

回答

3

沒有特定的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