CLR为每个CPU或每个Core创建一个托管堆(在服务器GC模式下)?

时间:2016-05-01 08:30:46

标签: .net garbage-collection clr

我在使用四核CPU的生产机器上运行Windows Service(服务数千个SOAP / SignalR客户端) 使用"工作站GC模式"它已经运行了一段时间。最近我开始关注"服务器GC模式"找出它是否是我案件的更好选择 目前我坚持这个:
对于"服务器GC模式" Official Documentation状态 - "为每个CPU提供堆和执行垃圾收集的专用线程,并且同时收集堆#34;。 并且不清楚"每个CPU"表示CPU或CPU核心(物理/逻辑)。我调查了其他来源,事情变得更糟,因为它们相互矛盾。

所以我的问题是:

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

  2. 是否有工具(分析器)来检查正在运行的托管流程中的这些堆?

1 个答案:

答案 0 :(得分:2)

  1. 是。堆已创建。实际上每个逻辑核心有2个线程的堆,包括服务器gc模式下的后台模式。
  2. 使用sys内部的VMMAP工具。它详细显示了各个堆。其他选择是使用带有windbg的sos.dll。