有没有办法检测Mono是否在运行时使用Boehm GC或SGen GC?

时间:2014-09-28 14:46:24

标签: mono xamarin.ios

我希望能够在运行时检测Mono运行时是使用Boehm GC还是使用SGen GC。我尝试谷歌搜索解决方案,并花了一些时间浏览Mono文档,但找不到解决方案。有没有办法检测Mono在运行时使用哪个GC实现?

2 个答案:

答案 0 :(得分:8)

您可以使用GC.MaxGeneration属性,当使用Boehm GC时它将为0并且> 0与sgen。

答案 1 :(得分:0)

除了执行GC实现之外,您可能还想知道GC上是否启用了NewRefCount(NRC)扩展。

您可以从以下网址访问该信息:

bool NSObject.IsNewRefcountEnabled ();

E.g。在Touch.Unit跑步者中你会看到:

        Writer.WriteLine ("[GC:\t{0}{1}]", GC.MaxGeneration == 0 ? "Boehm": "sgen", 
            NSObject.IsNewRefcountEnabled () ? "+NewRefCount" : String.Empty);

以便测试结果日志包含GC信息和选项。