I am running a large .net 4.0 x86 app on Windows Server 2003 x64 (2x Xeon 4 core procs), and am running into issues where my app ~2-3 times a day freezes for 30 seconds, and then resumes functioning as normal. The application is only rebooted once a week, and consumes 400-800 mb of memory, so I am assuming these freezes are Garbage Collection. I am only seeing the freezes in the logs, not live, or I would check the Task Manager to confirm.
I am trying to figure out which .Net 4 GC is running, and how to either switch the GC to the new concurrent background gc if it isn’t, or how to confirm these are in fact GCs (Procmon doesn’t show .Net instruments in Win2k3 server).
You are running on the server version of Windows, you’ll get the server version of the garbage collector by default. Which doesn’t do background collections, garbage is collected by multiple threads so occasional observable pauses are not unusual. You can force the workstation version with an app.exe.config file:
Also review the docs for the GC.RegisterForFullGCNotification() method for a way to deal with the side-effect of the pauses.
.NET version 4.5 will support background collections for the server GC.