Garbage Collector in NAV 2009

Today I learned one new thing:

Garbage collector in NAV 2009 is set to DISABLED by default. Do not ask me what does it mean and why it is disabled. I do not know. Regardless the value DISABLED, this settings just means that Workstation mode is used for GC. Microsoft NAV team have learned, that by enabling it, you can speed up the NAV Server! Are you asking how you can enable it? It is easy, you need only to add this into the Microsoft.Dynamics.NAV.Server.exe.config file:

      <gcServer enabled="true"/>

It is standard Dot.NET config parameter. What I have noticed when I just googled this parameter, that it could (and probably would) raise memory consumption of the process. Of course, because if I understand it correctly, it will not release the memory of created object immediately, after the object is not used anymore, but only when the GC is started (e.g. there is no enough free memory or max time between runs was hit). But this “not releasing” leads to better performance. But, again, this is just my understanding of the problem. I can be wrong. Based on the comment from Per (, the difference is, that Server GC will be used instead workstation GC, which means separate threads on highest priority for the GC, instead running GC in context of user thread. And this means using all available CPU cores etc. and this leads to better performance when doing GC, because during GC run the threads are suspended. But still, that the performance is better, is true.

Please, post into comments your experience with this setting.

I want to thank to Michael Nielsen for this info…


(Edited 7:08 CET 25.4.2012)

  • Thanks for the comment, I already get this on my second block site too. After reading the MSDN article I have changed this article text.

  • I noticed from the MSDN documentation that it is that Server Garbage collection is Disbled, which means that it is defaulting to Workstation Garbage collection.  So the garbage collector is still running it is just adjusting which mode.

    They also go on to mention that workstation should be optimsed for a single-core deployment and server is optmized for multi-core configurations.

    I am very interested to see how adjusting this setting can impact some of our NAV users in a test enviroment, great find!