2011-07-25 62 views
6

我正在运行一个程序来构建一个非常大的对象,并且我将通过为此进程分配超过2GB的内存而获益匪浅。提前致谢。如何为Windows中的进程分配超过2GB的内存?

+0

即使它可能使你的程序更容易编写,分配2GB内存+块肯定会导致您的用户较差的应用程序。 – JaredPar

+0

你如何构建一个2GB的对象? – Gabe

+0

@gabe一个数组是最明显的例子 –

回答

3

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

+0

您可以在boot.ini配置中使用/ 3gb开关,并标记进程“大地址空间感知”......但尝试在32位操作系统的内存中加载2GB并不容易用于本机代码或托管代码的任务。 –

+2

@alexei机器的管理员可以做/ 3gb,但应用程序不能 –

6

您不能分配一个大于2GB的单个对象(或一个数组),这是一个CLR限制。你必须把这个物体分成几块。

+0

所以假设我有一个3GB的对象,我分裂成6个0.5GB的对象,是不是会超过2GB的进程限制?再次感谢。 – abw333

+0

而且,TBH,如果你试图管理一个这样大小的对象,你需要做一些反思。 –

+0

@Schroedingers Cat想要为某些算法分配巨大对象是完全合理的。 –

5

.NET Framework 4.5允许在64位平台上创建大于2GB的数组。此功能默认情况下未启用,必须使用gcAllowVeryLargeObjects元素通过配置文件启用。

http://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx

+0

这是唯一的方法吗?如果我不需要,我真的不想切换到VS2012。 –

相关问题