如何在Windows中为进程分配超过2GB的内存?

7

我正在运行一个程序,构建一个非常大的对象,我希望能够给这个进程分配超过2GB的内存。提前致谢。


尽管这样做可能会让你的程序更容易编写,但分配2GB以上的内存块肯定会导致用户使用体验变差。 - JaredPar
你如何构建一个2GB的对象? - Gabe
@gabe 数组是最明显的例子。 - David Heffernan
@David:如果是那样的话,我本来会认为原帖作者会说“一个非常大的数组”。 - Gabe
3个回答

6

你无法分配超过2GB的单个对象(或数组),这是CLR的限制。您需要将对象分成小块。


2
@Schroedingers Cat,对于某些算法而言,想要分配大型对象是完全合理的。 - David Heffernan
@艾萨克·牛顿 - 当然会超过3.0GB的限制。在32位操作系统中,除非使用/3gb开关,否则无法将超过2GB的内容加载到虚拟内存中。如果您将如此大量的信息加载到应用程序中,除非您完全控制该系统,否则您的设计是有缺陷的。 - Security Hound
使用64位Windows,你就不用担心它了。 - Ana Betts
@paul 更改用户的启动设置将被视为恶意软件。 - David Heffernan
1
@David 嗯,我的意思是有一些合理的情况 - 如果你的软件成本超过10K美元,并且配备了自己预配置的机器(考虑高度专业化的工业应用程序),那么这可能是合理的,所以值得知道。但对于我们大多数人来说,这几乎肯定不是这种情况。 - Ana Betts
显示剩余4条评论

5

这是唯一的方法吗?如果不必要,我真的不想切换到VS2012。 - Bob.

4

您提到的是 32 位 Windows 中虚拟内存的 2GB 限制。在 32 位系统上无法绕过此限制。


你可以在boot.ini配置中使用/3gb开关,并标记进程“大地址空间感知”...但是在32位操作系统上尝试将2GB加载到内存中对于本机代码或托管代码来说都不是一件容易的事情。 - Alexei Levenkov
2
@alexei 机器的管理员可以使用/3gb,但应用程序不能。 - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接