我下载了一本免费的书《.NET内存管理底层》,链接:Under the hood of .Net Memory Management。在其中一个章节中,作者提到了各个代的阈值,当一个代达到阈值时,垃圾回收机制会强制回收该代和所有子代的对象。具体文本如下:
GC会在以下情况之一下自动运行在单独的线程上:
- 任何一代中的对象大小达到特定阈值。确切地说,当: - Gen 0 达到 ~256KB - Gen 1 达到 ~2MB(此时GC将收集Gen 1和0) - Gen 2 达到 ~10MB(此时GC将收集Gen 2、1和0)
需要注意的是,以上阈值仅为起始水平,因为.NET会根据应用程序的行为修改这些级别。
我想知道,在应用程序运行时,有没有一种方法可以确定给定应用程序的第二代当前的阈值值?
GC会在以下情况之一下自动运行在单独的线程上:
- 任何一代中的对象大小达到特定阈值。确切地说,当: - Gen 0 达到 ~256KB - Gen 1 达到 ~2MB(此时GC将收集Gen 1和0) - Gen 2 达到 ~10MB(此时GC将收集Gen 2、1和0)
需要注意的是,以上阈值仅为起始水平,因为.NET会根据应用程序的行为修改这些级别。
我想知道,在应用程序运行时,有没有一种方法可以确定给定应用程序的第二代当前的阈值值?