我希望能够在运行时检测Mono运行时是使用Boehm GC还是使用SGen GC。我尝试谷歌搜索解决方案,并花了一些时间浏览Mono文档,但找不到解决方案。有没有办法检测Mono在运行时使用哪个GC实现?
答案 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信息和选项。