Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该有多少个GC线程?_C#_.net 4.0_Garbage Collection - Fatal编程技术网

C# 我应该有多少个GC线程?

C# 我应该有多少个GC线程?,c#,.net-4.0,garbage-collection,C#,.net 4.0,Garbage Collection,我的理解是,在服务器GC模式下,应用程序的每个处理器都有一个GC线程。但是,当查看转储文件时,我看到的是不同的结果 当我打开一个转储文件时,它会显示4个过程。 !!eehheap-gc命令建议使用相同的方法 当我跑的时候!threads-特殊命令,它显示8个GC线程。为什么? 您有4个内核和4个堆(如转储中所示) 每个核心都有一个GC线程(用于第0代和第1代)和一个用于第2代的后台GC线程 总共8个线程。您可以看到双核上4个线程的描述,查找“Server GC:Before and afte

我的理解是,在服务器GC模式下,应用程序的每个处理器都有一个GC线程。但是,当查看转储文件时,我看到的是不同的结果

当我打开一个转储文件时,它会显示4个过程。

!!eehheap-gc命令建议使用相同的方法

当我跑的时候!threads-特殊命令,它显示8个GC线程。为什么?

您有4个内核和4个堆(如转储中所示)

每个核心都有一个GC线程(用于第0代和第1代)和一个用于第2代的后台GC线程


总共8个线程。您可以看到双核上4个线程的描述,查找“Server GC:Before and after”。

您有4个核和4个堆(如转储中所示)

每个核心都有一个GC线程(用于第0代和第1代)和一个用于第2代的后台GC线程



总共8个线程。您可以看到双核上4个线程的描述,查找“服务器GC:Before和after”。

。您有4个物理核,但有8个逻辑核。执行
Console.WriteLine(Environment.ProcessorCount)
并查看它告诉您什么。它应该返回服务器GC使用的逻辑核数量。另一方面,每个物理核心只创建一次堆。@Jeroenvanevel这是我从客户机的转储文件中得到的。@Servy是否有从转储文件中验证它的方法?@MethodMan不确定它与我的问题有什么关系?可能是超读。您有4个物理核,但有8个逻辑核。执行
Console.WriteLine(Environment.ProcessorCount)
并查看它告诉您什么。它应该返回服务器GC使用的逻辑核数量。另一方面,每个物理核心只创建一次堆。@Jeroenvanevel这是我从客户机的转储文件中得到的。@Servy是否有从转储文件中验证它的方法?@MethodMan不确定它与我的问题有什么关系?什么是HEPA?顺便说一句,此应用程序使用的是.net-4.0,而您提供的链接似乎是针对.net 4.5的。最后,我不知道后台GC有自己的线程。你能提供一些参考资料吗?该应用程序的目标可能是4.0,但电脑上到底安装了什么?4.0。即使安装了4.5,使用.NET 4.0的应用程序是否可以使用.NET 4.5特定的东西?据我所知,服务器GC为每个逻辑处理器创建一个线程。正如您所说:ServerGC还为每个逻辑处理器的Gen2创建了一个后台线程。然而,我的印象是,每个物理核只有一个堆——这是否意味着我错了,每个逻辑核都有一个堆?@PaulSnow——它无法避免这样做。4.5是4.0的就地更新,而不是添加。什么是HEPA?顺便说一句,此应用程序使用的是.net-4.0,而您提供的链接似乎是针对.net 4.5的。最后,我不知道后台GC有自己的线程。你能提供一些参考资料吗?该应用程序的目标可能是4.0,但电脑上到底安装了什么?4.0。即使安装了4.5,使用.NET 4.0的应用程序是否可以使用.NET 4.5特定的东西?据我所知,服务器GC为每个逻辑处理器创建一个线程。正如您所说:ServerGC还为每个逻辑处理器的Gen2创建了一个后台线程。然而,我的印象是,每个物理核只有一个堆——这是否意味着我错了,每个逻辑核都有一个堆?@PaulSnow——它无法避免这样做。4.5是4.0的就地更新,而不是添加。