作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法想象所有线程必须获得一个锁才能分配内存。那么是否有多个 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/
我是一名优秀的程序员,十分优秀!