【发布时间】:2010-12-15 00:02:12
【问题描述】:
我有一个大型多线程 C# 应用程序在多核 4 路服务器上运行。目前我们正在使用“服务器模式”垃圾收集。但是测试表明,工作站模式 GC 更快。
使用服务器 API 的托管代码应用程序从使用服务器优化的垃圾收集器 (GC) 而非默认工作站 GC 获得显着优势。
工作站是默认的 GC 模式,也是单处理器计算机上唯一可用的模式。 Workstation GC 托管在控制台和 Windows 窗体应用程序中。它与正在运行的程序同时执行完整(第 2 代)收集,从而最大限度地减少延迟。此模式对于客户端应用程序很有用,在这些应用程序中,感知性能通常比原始吞吐量更重要。
服务器 GC 仅在多处理器计算机上可用。它为每个处理器创建一个单独的托管堆和线程,并并行执行集合。在收集期间,所有托管线程都被暂停(运行本机代码的线程仅在本机调用返回时才暂停)。这样,服务器 GC 模式可以最大化吞吐量(每秒的请求数),并随着处理器数量的增加而提高性能。性能在配备四个或更多处理器的计算机上尤为突出。
但我们没有看到性能大放异彩!!!!有人有什么建议吗?
【问题讨论】:
-
DanC.这是我第一次听说 GC 模式。您可以发布任何指向相关 MSDN 页面的链接吗?
-
你期待什么样的表演?您的程序是基于 Windows GUI 的还是某种 Web 服务?
-
这里的 MSDN 上也有一些东西:msdn.microsoft.com/en-us/library/bb680014.aspx
-
我的应用程序是在多核 4 路服务器上运行的大型多线程 C# 应用程序。所以它既不是 UI 也不是网络服务......!
标签: c# .net garbage-collection