我正在看转储,我看到了
mscorwks!WKS :: GCHeap :: GarbageCollectGeneration + 0x1a9。
如果我理解GC在工作站模式下执行GarbageCollection?我看到其他线程正在等待mscorwks!WKS::GCHeap::WaitUntilGCComplete+0x34
。
这是否意味着我使用工作站concurent =错误的GC模式运行?我知道这个服务器是一个带有一个核心的处理器。我应该为ASP.NET App更改为concurent = true吗?
如果我添加另一个处理器,GC会自动在服务器模式下运行吗?
答案 0 :(得分:1)
Concurrent GC适用于交互式(UI)应用程序。对于ASP.NET等服务器应用程序,应首选非并发GC。根据{{3}},ASP.NET根据系统配置选择最佳选择,并且您没有更改此设置。
在MSDN上浏览MSDN documentation以获取更多信息。至于回答,您的最后一部分问题 - 通常,CLR主机可以覆盖已配置的GC模式值。根据{{3}},ASP.NET将为多处理器计算机选择服务器GC。所以,是的,如果你再添加一个处理器,你应该使用服务器模式GC看到你的ASP.NET应用程序。
侧面说明,找出GC模式的可靠方法是使用garbage collection documentation属性。同样,MSDN doc会告诉您是否并发GC。例如,在工作站模式下, Interactive 值表示并发GC。