是否有人使用配置为使用Aspnet.config的多处理器计算机优化垃圾收集器:
<gcServer enabled="true"/>
<gcConcurrent enabled="true"/>
您网站的效果是否有所改善?
是否注意到任何问题?
答案 0 :(得分:20)
首先,Concurrent和Server是互斥选项。有关服务器GC误解的一些详细信息,请参阅this blog post。但是,ASP.NET默认承载服务器GC(请参阅Scott Hanselman's discussion),因此没有区别。
我建议坚持使用服务器而不是并发ASP.NET网站。对于用户模式应用程序,并发GC一直是用户响应,因为服务器gc将导致“挂起”。
我使用过服务器GC,并注意到在某些情况下有显着改善。
服务器模式GC确实可以帮助用户应用程序,但是,如果您的用户应用程序正在使用大量内存池,并且会变得高度分散。
答案 1 :(得分:3)
(非常古老的问题,我知道,但无论如何我想加上这个)
Server GC和Concurrent GC之间有一个主要区别:Server GC每个处理器有一个线程,并在进行收集时挂起该处理器上的线程,服务器Concurrent GC线程与其他线程并行运行,即没有悬挂。请参阅this MSDN article for more info以及更微妙的差异。
根据周期所需的时间,这可能会对应用程序的用户响应性产生相当大的影响,因此请明智地选择。对于没有UI的ASP.NET,Server GC是更好(和默认)的选项。
答案 2 :(得分:2)
简单地说,Workstation GC模式可以提高单个用户的性能,而服务器GC模式则设计用于一直有多个请求的程序。我真的希望这个问题不是一个更大问题的症状。有时当人们开始质疑垃圾收集器时,因为他们没有看到他们期望的内存占用。不要期望与不同的垃圾收集器有很大的收获。在我所做的几乎所有测试中,你使用的收集器几乎没有什么区别。