如何获得分配给每一代(Gen0、Gen1、Gen2)的堆内存
本文关键字:Gen1 何获得 Gen2 内存 Gen0 一代 分配 | 更新日期: 2023-09-27 18:25:01
如CLR中通过C#所述,"CLR初始化时,它为每一代选择一个预算大小。"。它假设Gen0为256KB,Gen1为2MB,Gen2为10MB。(不确定这是否包括大型对象堆)
当然,随着创建更多的对象和堆大小的增加,这个预算必须不断增加。
我知道GC.GetTotalMemory()方法,它返回已消耗的总内存,但它没有提供每代消耗的信息。
有没有一种方法可以获得分配给每一代的堆大小?
如果你真的想深入研究.NET内存管理,那么我建议你查看以下链接:
- Microsoft文档:如何:使用CLR档案器
- David Broman的CLR评测API博客:CLRProfiler V4发布
- http://msdn.microsoft.com/en-us/magazine/cc163528.aspx
上面的链接提供了许多见解,并提供了一个由MS编写的CLR内存分析器,该分析器附带完整的源代码。。。