What is the default heap size in .NET 2.0 and when does it change?

I just finished reading a great article on Garbage Collection in the .NET Framework:

http://msdn.microsoft.com/msdnmag/issues/1100/GCI/

This article says that a garbage collection occurs whenever a new object needs to be created and there is not enough room on the heap for it. It says that the garbage collection will clear out the garbage objects to make room for the new object, but what if you have a large number of live (non-garbage) objects and the garbage collector is unable to free enough space for the new object?

Can the size of the heap grow at this point?

If so, what is the heap's default size and by how much will it grow in this situation?

I have searched and I have been unable to find the answers to these questions documented anywhere. There needs to be some official documentation on this.

Thanks,

Kyle

[999 byte] By [Kyle_W] at [2008-1-10]
# 1
The "heap" is the free store. It's the freely allocatable RAM on the system.
PeterRitchie at 2007-10-3 > top of Msdn Tech,Visual C#,Visual C# General...
# 2
That contradicts the article I mentioned above. The article above states that garbage collection is only triggered when a new object needs to be created and the heap is full. This implies the heap has an initial fixed size. If this isn't true, then the article's description of the behavior of garbage collection is not accurate, and a more accurate description is needed.
Kyle_W at 2007-10-3 > top of Msdn Tech,Visual C#,Visual C# General...
# 3
Well, yes, the "initial" size is free memory. "Full" means there isn't enough free memory to allocate the # of contiguous bytes needed. When objects are no longer used (there are no longer any references to them) they're not "freed" right away. Garbage collection goes through the heap looking for these types of objects and frees them. Garbage collection usually also means reorganizing memory to avoid heap fragmentation.
PeterRitchie at 2007-10-3 > top of Msdn Tech,Visual C#,Visual C# General...
# 4
According to the article above then, a garbage collection would not occur until all of the system RAM is full. By that time I would think there would be too much work for the GC to do in order for it to complete its work in a timely fashion. I feel this cannot be the way it works.
Kyle_W at 2007-10-3 > top of Msdn Tech,Visual C#,Visual C# General...