Memory Limits for Windows Releases回答Windows上任何单个进程可以解决的最大内存量:
在32位版本的Windows上,单个进程可以映射并解决否 超过3GB的虚拟内存。在64位版本中 Windows,一个32位进程可以映射和地址不超过4GB 一次虚拟内存。
对于64位进程,数量很难计算 有许多重叠的限制可以适用于所有 各种因素。通常大约7TB。
我的问题:如何验证“3GB”,“4GB”等值?
我们可以编写一个C#代码来证明吗?有没有办法呢?
感谢。
答案 0 :(得分:30)
他介绍了为什么限制是它们的原因,以及测试。测试的代码在某个地方的管中浮动。
如果您想了解内存资源以及从泄漏各种类型中可以看到的问题,那么这是一个很好的阅读。
但是,简而言之,32位操作系统上的32位:2 GB,除非设置为大地址空间感知,在这种情况下为3 GB。 64位操作系统上的32位:2 GB,除非设置为大地址空间感知,在这种情况下为4 GB。
64位进程:2 GB,除非设置为大地址空间感知,在这种情况下它可以解决高达8 TB,除非它托管在基于Intel Itanium的系统上,限制为7 TB。
Microsoft在以下位置说明了各种限制(按口味和类型): http://msdn.microsoft.com/en-us/library/aa366778.aspx
答案 1 :(得分:1)
你可以在控制台应用程序中编写某种循环来测试它。
也许创建一个正好为1MB的字符串并循环连接过程以增加它的大小,直到得到... Stack Overflow错误。
在每次迭代时WriteLine的大小或迭代次数。
修改强>
我想补充一下,因为STRING是不可变的(尽管技术上是一个引用类型)才能使用OBJECT
编辑两个
Trisped指出Object中的一个字符串仍然是不可变的。
创建字节数组[1024]应该可以解决问题。