2011-07-25 83 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。 –

相關問題