2010-02-26 129 views
2

我正在阅读由Jeffrey Ricther撰写的关于MSDN垃圾回收的文章。他提到“如果NextObjPtr超出地址空间区域的末尾,那么堆已满并且必须执行收集”为.NET应用程序分配的最大内存大小是多少?

我想知道这是什么地址空间区域或什么是最大值CLR分配给.NET应用程序的内存大小,这些应用程序被完全填充以便GC进入行动?

回答

1

垃圾收集器是世代类型的,其中第0代最初有256 KB,第1代2 MB,第2代有10 MB。但这些只是初始值。根据你的程序的行为,它们会增长或缩小。

注意,我从J.里氏的书(通过C#CLR,第2版)服用这些值,页506

在32位操作系统,最大可用虚拟地址空间为2 GB(3 GB,如果你使用/ 3GB开关启动,并有一些特定的Windows版本)。其余的部分由Windows自己保留。

但是这个空间与您的EXE和DLL(包括.NET,但不包括系统DLL)以及JIT编译器和其余.NET的必要数据结构共享。所以,它不到2 GB,但你的里程可能会有所不同。

+0

谢谢。我有兴趣知道他们可以增长多少? 4GB? – csharpbaby 2010-02-26 09:52:33

+0

我编辑了包含这个答案。 – Timores 2010-02-26 10:20:27

相关问题