在.NET中,GC.MaxGeneration是不是2?

Jam*_*man 5 .net c# garbage-collection

据我所知,对于所有版本的.NET,有三代垃圾收集 - 0,1和2.

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

Fré*_*idi 8

应该注意的是,GC.MaxGeneration对于应用程序的生命周期来说是不变的,本身就是一个实现细节:

对实施者的说明

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

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

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

  • @John,因为它说*用于此实现*.换句话说,"MaxGeneration"保持不变只适用于Microsoft的.NET框架实现. (4认同)
  • @John,应用程序使用的 .NET 实现在其生命周期内确实不会改变,但重点是,如果使用 Microsoft 以外的其他实现,则“MaxGeneration”在程序执行期间可能会发生变化。 (2认同)