.net CLR为每个CPU或每个核心创建托管堆(在服务器GC模式下)?

.net CLR为每个CPU或每个核心创建托管堆(在服务器GC模式下)?,.net,garbage-collection,clr,.net,Garbage Collection,Clr,我管理了运行在具有四核CPU的生产机器上的Windows服务(服务于数千个SOAP/SignalR客户端)。 它在“工作站GC模式”下运行了一段时间。最近,我开始研究“服务器GC模式”,以确定它是否更适合我的情况。 目前,我被这个问题困扰着: 对于“服务器GC模式”状态-“为每个CPU提供一个堆和一个执行垃圾收集的专用线程,同时收集堆”。 现在还不清楚“每个CPU”是指CPU还是CPU核心(物理/逻辑)。我调查了其他来源,当它们相互矛盾时,情况变得更糟 所以我的问题是: 根据什么(CPU/CPU

我管理了运行在具有四核CPU的生产机器上的Windows服务(服务于数千个SOAP/SignalR客户端)。
它在“工作站GC模式”下运行了一段时间。最近,我开始研究“服务器GC模式”,以确定它是否更适合我的情况。
目前,我被这个问题困扰着:
对于“服务器GC模式”状态-“为每个CPU提供一个堆和一个执行垃圾收集的专用线程,同时收集堆”。 现在还不清楚“每个CPU”是指CPU还是CPU核心(物理/逻辑)。我调查了其他来源,当它们相互矛盾时,情况变得更糟

所以我的问题是:

  • 根据什么(CPU/CPU核心)创建堆和专用线程

  • 是否有工具(探查器)来检查正在运行的托管流程中的这些堆

  • 对。将创建一个堆。实际上,在服务器gc模式下,每个逻辑核包含1个堆和2个线程,包括后台模式
  • 使用sys内部的VMMAP工具。它详细显示了各个堆。另一种选择是将sos.dll与windbg一起使用

  • 解释一下,当你得到答案时,你将采取什么不同的做法,这可能会变成一个有用的Q+a。因此,它是每个CPU或每个核心的堆?对于每个逻辑核心。