如何获得分配给每一代(Gen0、Gen1、Gen2)的堆内存

本文关键字:Gen1 何获得 Gen2 内存 Gen0 一代 分配 | 更新日期: 2023-09-27 18:25:01

如CLR中通过C#所述,"CLR初始化时,它为每一代选择一个预算大小。"。它假设Gen0为256KB,Gen1为2MB,Gen2为10MB。(不确定这是否包括大型对象堆)

当然,随着创建更多的对象和堆大小的增加,这个预算必须不断增加。

我知道GC.GetTotalMemory()方法,它返回已消耗的总内存,但它没有提供每代消耗的信息。

有没有一种方法可以获得分配给每一代的堆大小?

如何获得分配给每一代(Gen0、Gen1、Gen2)的堆内存

如果你真的想深入研究.NET内存管理,那么我建议你查看以下链接:

  • Microsoft文档:如何:使用CLR档案器
  • David Broman的CLR评测API博客:CLRProfiler V4发布
  • http://msdn.microsoft.com/en-us/magazine/cc163528.aspx

上面的链接提供了许多见解,并提供了一个由MS编写的CLR内存分析器,该分析器附带完整的源代码。。。