gpt4 book ai didi

.net - CLR:所有线程如何共享第 0 代?

转载 作者:行者123 更新时间:2023-12-04 12:00:13 27 4
gpt4 key购买 nike

我无法想象所有线程必须获得一个锁才能分配内存。那么是否有多个 Gen 0 堆?是否有一个在线程之间划分的?

最佳答案

来自这篇文章:Garbage Collection Part 2: Automatic Memory Management in the Microsoft .NET Framework通过杰弗里里希特

无同步分配在多处理器系统上,托管堆的第 0 代被拆分为多个内存区域,每个线程使用一个区域。这允许多个线程同时进行分配,因此不需要对堆的独占访问。

可扩展集合 在运行服务器版本的执行引擎 (MSCorSvr.dll) 的多处理器系统上,托管堆被分成几个部分,每个 CPU 一个部分。当一个收集开始时,收集器每个 CPU 有一个线程;所有线程同时收集自己的部分。执行引擎 (MSCorWks.dll) 的工作站版本不支持此功能。

还有很多其他事情正在发生,请查找“多线程应用程序的性能”标题。

关于.net - CLR:所有线程如何共享第 0 代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4745249/

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