gpt4 book ai didi

.net - .net 堆内存的架构

转载 作者:行者123 更新时间:2023-12-04 22:58:46 24 4
gpt4 key购买 nike

当我们谈论 Windows 内存架构时 => 我们谈论的是虚拟内存管理器,它将内存块“提供”给应用程序管理器堆,应用程序管理器堆分配应用程序请求的内存大小。

( http://msdn.microsoft.com/en-us/library/ms810466.aspx )

但在 .net 中 => 是 .net 托管堆正在从虚拟内存管理器“询问”内存(我几乎可以肯定是这种情况)还是 .net 托管堆和虚拟内存之间存在某个层内存管理器?

(本题与GC无关)

最佳答案

.NET 运行时基本上充当托管堆的内存管理器。因此,每次你新建一个对象时,它要么将 gen0 GC 堆上的指针前移(这可能会触发一次收集),要么在大对象堆上分配一个 chuck。后者类似于常规 CRT 堆,因为它使用空闲列表。

GC 堆本身存储在根据需要分配/释放给操作系统的段中。这意味着托管内存使用情况通常不会立即反射(reflect)在进程级别。

可以通过WinDbg加载的SOS调试器扩展查看托管堆是如何从不同的段构建的(它也可以在VS中加载,但如果你问我体验有点粗糙)。

我想到了两本书:CLR via C#Shared Source CLI .他们都在一定程度上涵盖了这一点。

关于.net - .net 堆内存的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10557369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com