Windows发行版的内存限制回答什么是Windows上任何一个进程可以处理的最大内存量:
在32位版本的Windows上,单个进程可以映射和寻址不超过3GB的虚拟内存。 在64位版本的Windows中,32位进程一次可以映射和寻址不超过4GB的虚拟内存。
对于64位进程,数量很难计算,因为有许多重叠的限制可能适用于各种因素。 通常在7TB左右。
我的问题:如何validation“3GB”,“4GB”等值?
我们可以写一个C#代码来certificate它吗? 有没有一种方法呢?
谢谢。
Mark Russinovich发表了一个关于windows内存资源的多部分系列,这真的很好。 你可以在这里找到它: http : //blogs.technet.com/b/markrussinovich/archive/2008/07/21/3092070.aspx
他涵盖了限制的原因以及测试。 测试的代码在某处漂浮在管中。
如果你想知道内存资源和泄漏的各种类型可以看到的问题,这是一个很好的阅读。
但是,简而言之,32位操作系统上的32位操作系统:2 GB,除非设置为大地址空间感知,在这种情况下为3 GB。 32位64位操作系统:2 GB,除非设置为大的地址空间感知,在这种情况下4 GB。
64位进程:2 GB,除非设置为大型地址空间感知,在这种情况下,它可以寻址高达8 TB,除非它托管在基于Intel Itanium的系统上,限制为7 TB。
Microsoft在以下位置声明了各种限制(按风格和类型): http : //msdn.microsoft.com/en-us/library/aa366778.aspx
你可以在控制台应用程序中编写某种循环来测试这个。
也许创建一个正好1MB的字符串,并通过串联进程循环,以增加它的大小,直到你得到一个…堆栈溢出错误。
在每次迭代WriteLine的大小或迭代次数。
编辑
我会补充一点,因为STRING是不可变的(尽管在技术上是一个引用类型)使用OBJECT
编辑两个
Trisped指出,一个对象中的字符串仍然是不可变的。
创建一个字节数组[1024]应该做的伎俩。