据我了解,所有版本的 .NET 都有三代垃圾收集 - 0、1 和 2。
在任何情况下,检查GC.MaxGeneration
会产生除 2 以外的任何结果吗?其他框架上是否存在具有不同 GC 代数的 GC?
据我了解,所有版本的 .NET 都有三代垃圾收集 - 0、1 和 2。
在任何情况下,检查GC.MaxGeneration
会产生除 2 以外的任何结果吗?其他框架上是否存在具有不同 GC 代数的 GC?
应该注意的是GC.MaxGeneration在应用程序的生命周期内保持不变,这本身就是一个实现细节:
给实施者的注意事项
对于此实现,该
MaxGeneration
属性返回的值保证在执行应用程序的生命周期内保持不变。
这意味着不仅可以与 .NET 框架的其他实现MaxGeneration
不同2
,而且在程序执行期间也会有所不同(取决于调用属性 getter 时垃圾收集器使用的代数)。
其他实现也可以根据情况使用不同的垃圾收集器。例如,Mono 可以使用Boehm非分代 GC (MaxGeneration
将始终如此0
),或SGen 分代 GC(仅实现两代,因此MaxGeneration
将始终小于或等于1
那里)。