Experience using gcServer="true" to set garbage collector for .NET

21,769

Solution 1

First, Concurrent and Server are mutually exclusive options. See this blog post for some details on server GC misconceptions. However, ASP.NET, by default, hosts the server GC (see Scott Hanselman's discussion), so there will be no difference there.

I'd recommend sticking with server instead of concurrent for an ASP.NET website. For a user-mode application, the concurrent GC has been user responsiveness, since the server gc will cause "hangs".

I have used the server GC, and noticed significant improvements in certain situations.

The server mode GC does help user apps, though, if you're user application is working with huge memory pools, and getting highly fragmented.

Solution 2

(very old question, I know, but I thought to add this anyway)

There's one major difference between Server GC and Concurrent GC: the Server GC has one thread per processor and suspends the threads on that processor when doing a collection, the server Concurrent GC thread runs in parallel with the other threads, i.e., no suspension. See this MSDN article for more info and more subtle differences.

Depending on the time a cycle takes, this can make a rather big difference in user responsiveness of your application, so choose wisely. In case of ASP.NET, which does not have a UI, Server GC is the better (and default) option.

Solution 3

Simply put, the Workstation GC mode improves performance for a single user, while the server GC mode is designed for use on a program that has multiple requests all the time. I truly hope that this question isn't a symptom of a much larger problem. sometimes when people start questioning the garbage collector it's because they're not seeing memory footprint that they were expecting. don't expect great gains with a different garbage collector. In almost all the tests I've done, it's made little difference which collector you are using.

Share:
21,769

Related videos on Youtube

lsalamon
Author by

lsalamon

lsalamon [a] gmail com #SOreadytohelp

Updated on July 09, 2022

Comments

  • lsalamon
    lsalamon almost 2 years

    Has someone used a configuration enabling the garbage collector optimized for multi-processor machines using Aspnet.config with :

    <gcServer enabled="true"/>
    <gcConcurrent enabled="true"/>
    

    Was there an improvement in the performance of your site?
    Are any problems noticed?

    • Pankaj Rawat
      Pankaj Rawat almost 7 years
      See here probably you will get answer
  • skolima
    skolima almost 12 years
    This is changing in 4.5, which introduces server concurrent GC: msdn.microsoft.com/en-us/library/ms229357.aspx
  • Reed Copsey
    Reed Copsey almost 12 years
    @skolima Yes - again, though, you just leave it "server", and it automatically uses the new concurrent server GC