我正在阅读Jeffrey Ricther撰写的关于MSDN垃圾收集的文章。他提到“..如果NextObjPtr超出了地址空间区域的末尾,则堆已满并且必须执行集合”
我想知道这个地址空间区域是什么,或者CLR分配给.NET应用程序的最大内存大小是多少,这些内容完全填满了GC以便采取行动?
答案 0 :(得分:1)
垃圾收集器属于世代类型,第0代最初为256 KB,第1代为2 MB,第2代为10 MB。但这些只是初始值。根据程序的行为,它们会增长或缩小。
请注意,我从J. Richter的书(CLR via C#,第2版),第506页中获取这些值。
在32位操作系统上,最大可用虚拟地址空间为2 GB(如果使用/ 3GB开关启动并具有某些特定的Windows版本,则为3 GB)。其余部分由Windows本身保留。
但是这个空间与您的EXE和DLL(包括.NET而不是系统DLL)共享,以及JIT编译器和.NET其余部分的必要数据结构。因此,它不到2 GB,但您的里程可能会有所不同。