我知道.NET中的所有对象(在x86或x64架构中)存在2 GiB限制,并且由于内存碎片和.NET开销,您可以使用最多1.2-1.4 GB的应用程序获得OutOfMemory Exception之前的虚拟内存。所以当我这样做时:
int[] array1 = new int[300 * 1000 * 1000];//about 1.1 GB
对于64位操作系统上的32位应用程序,我得到OutOfMemory Exception,这是可预测的。但是当编译为64位时,CLR能够在堆上分配内存,并且不会发生运行时错误。
当应用程序编译为x64而不能为x86平台目标执行时,CLR能够找到连续的内存块会发生什么?
感谢。