Generous Memory Allocation
Unless memory is in short supply, the OS allocates each running application more than the minimum physical memory required for it to run. The OS commonly give applications like Word and Excel more than a 'just get by' memory allocation. It is just as generous with the memory it allocated to our .NET applications.
Windows OS - If physical memory is not in short supply, the OS will give applications more or less all the RAM memory they ask for. When demand for memory exceeds supply, the OS will take back physical RAM from an application that is not using it to give it to an application that needs it.
CLR - If memory is not in short supply, .NET applications may use more memory than they need. A good example: when a .NET application is loaded into memory, assemblies are loaded in what is a fairly expensive but transient operation. After the assemblies are loaded and if memory is not in short supply, the leftover unused memory from loading the assemblies is left behind rather than being reclaimed.
Source : Today's Devcity NewsLetter by Mike McIntyre.
More on “Working Set, Minimum Working Set, and Maximum Working Set” too. Interesting Concepts. Also there is a very interesting fact on the OS trimming memory alloted to applications while minimising an application after loading. I tried it out and the change is mind blowing. He also gives the reason on why this is bad idea to implement this in an app just after loading.
It is possible to reduce the working set size of a .NET Windows Forms application by minimizing and then maximizing the application immediately after it loads. Windows OS trims the working set of applications when they are minimized. The memory that was briefly used while loading all those assemblies mentioned earlier is trimmed by the process of minimizing and maximizing the application.
Really good read. Check it out to know some more on Memory Management in .NET. Also dont miss to read the demonstration part ;)