我以为托管堆动态增长?

时间:2009-07-10 17:06:10

标签: .net garbage-collection

如果我正确理解.NET CLR中的垃圾收集,那么当需要引用类型分配的空间但是托管堆上没有空间时,就会发生GC。那么托管堆有多大的限制呢?感谢。

1 个答案:

答案 0 :(得分:1)

是的,对于32位进程,虚拟地址空间限制为2GB(当您考虑所有CLR的开销时,实际上更接近1.5GB)。 64位进程的限制是8TB。

这并不意味着堆最初是2GB,而是堆可以增长到那个大小。 CLR将根据需要分配更多内存。堆具有不同的代(编号为0到2),并且这些代中的每一代都具有阈值。这是触发垃圾收集的相应阈值的会议。在您的应用程序运行时,将调整这些阈值以最好地满足您的应用程序的性能需求。