我下载了“在 .Net 内存管理的幕后”一书的免费副本。在其中一章中,作者提到了各个代的阈值,这将迫使 GC 收集该特定代和所有其他子代。下面给出的确切文本:
在以下条件之一下,GC 会在单独的线程上自动运行。
当任何一代中的对象大小达到特定于一代的阈值时。准确地说,当:
- 第 0 代命中 ~256 K
- Gen 1 命中 ~ 2 MB(此时 GC 收集 Gen 1 和 0)
- Gen 2 达到 ~10 MB(此时 GC 收集 Gen 2、1 和 0)
值得牢记的是,上述阈值仅仅是起始级别,因为 .NET 会根据应用程序的行为修改级别。
我想知道是否有一种方法可以确定给定应用程序运行时的第二代当前阈值是多少。