7

据我了解,所有版本的 .NET 都有三代垃圾收集 - 0、1 和 2。

在任何情况下,检查GC.MaxGeneration会产生除 2 以外的任何结果吗?其他框架上是否存在具有不同 GC 代数的 GC?

4

1 回答 1

9

应该注意的是GC.MaxGeneration在应用程序的生命周期内保持不变,这本身就是一个实现细节:

给实施者的注意事项

对于此实现,该MaxGeneration 属性返回的值保证在执行应用程序的生命周期内保持不变。

这意味着不仅可以与 .NET 框架的其他实现MaxGeneration不同2,而且在程序执行期间也会有所不同(取决于调用属性 getter 时垃圾收集器使用的代数)。

其他实现也可以根据情况使用不同的垃圾收集器。例如,Mono 可以使用Boehm非分代 GC (MaxGeneration将始终如此0),或SGen 分代 GC(仅实现两代,因此MaxGeneration将始终小于或等于1那里)。

于 2013-04-05T12:54:34.023 回答