gpt4 book ai didi

c# - .net 中有哪些不同的堆?

转载 作者:太空狗 更新时间:2023-10-29 18:06:37 24 4
gpt4 key购买 nike

我在 dotmemory 中分析 Windows 窗体应用程序的内存使用情况,我注意到我的应用程序有 0-4 个大小不一的堆以及大对象堆。

我只是想知道是否有人对每个堆的用途以及每个堆中通常存储的内容有很好的解释?

最佳答案

其他答案似乎忽略了 之间存在差异这一事实。我不明白为什么商业分析器会混淆这两个概念,所以我强烈怀疑它毕竟是堆而不是世代。

当 CLR GC 使用 server flavor ,它为进程的关联掩码中的每个逻辑处理器创建一个单独的堆。这种分割的原因主要是为了提高分配的可伸缩性,并在 GC 中并行执行。这些是独立的内存区域,但是您当然可以在堆之间有对象引用,并且可以将它们视为单个逻辑堆。

因此,假设您有四个逻辑处理器(例如启用了超线程的 i5 CPU),您将在服务器 GC 下有四个堆。

大对象堆有一个不幸的、令人困惑的名字。它不是与每个处理器堆相同意义上的堆。它是在包含大型对象的多个 内存区域之上的逻辑抽象。

关于c# - .net 中有哪些不同的堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31598307/

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