.net - 托管堆和GC堆有什么区别

标签 .net clr vmmap

谁能给我解释一下托管堆和GC堆之间的区别吗?因为我注意到有时 Process explorer + VMMap 中的总托管堆大小 < (Gen 0 + Gen 1 + Gen 2 + LOH)。

在我看来,总托管堆应该等于 GC 堆(Gen0-2+LOH),为什么在进程资源管理器的 .NET 性能选项卡中,总 GC 堆大小大于 VMMap 中的托管堆大小?

最佳答案

GC HEAP

GC Heap 托管对象实例,Generations 是垃圾收集器堆的逻辑 View

MANAGED HEAP

托管堆段是垃圾收集器收集的一 block 内存 代表托管代码从操作系统保留(通过调用 VirtualAlloc)

LOADER HEAP

LoaderHeaps 将其进一步划分的类型系统组合在一起 1>高频堆 2>低频堆 3> stub 堆

您还可以使用SOS来验证这些堆

!eeheap-loader

!eeheap - GC

!GCRoot [-nostacks] [对象引用]

关于.net - 托管堆和GC堆有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16188003/

相关文章:

c# - 在 C# 中对这种行为的解释是什么

memory - Visual Studio 不会显示的其他托管堆内有什么?

macos - vmmap命令有API吗

CentOS 5.5 中 Wine 中的 .Net 框架

c# - 带有 Web 服务的 Entity Framework

c# - C# 中的局部静态变量?

c# - .net clr方法表结构

c# - 项目引用解决方案 .net 4.5 和 .net 3.5

c# - NLog CPU 性能问题

windbg - 为什么 windbg> !EEHeap -gc 显示的托管堆比 VMMAP.exe 小得多?