2012-06-30 26 views
2

我認爲一個32位進程可以使用至多2GB RAM,因爲一半的地址空間是爲操作系統保留的(可能是3GB的/ 3GB開關)。然而,星際爭霸II設法使用近4GB,並且它是一個32位EXE。 Process Explorer顯示:32位進程如何使用近4GB內存?

4,000,896 KB private bytes 
3,928,164 KB working set 

它是如何做到的以及如何在自己的程序中執行此操作?在.NET中可能嗎?在非託管C++?以某種方式託管C++?

回答

2

在64bit操作系統上32bit進程可以使用差不多4GB。

標記爲「支持大地址空間」的進程在32位操作系統中可以使用高達3GB,在64位操作系統上可使用高達3GB的完整地址空間。

以下是更多的討論:Can a 32bit process access more memory on a 64bit windows OS?

+0

謝謝,解釋。我想沒有.NET的等價物? – EMP

+1

它應該被支持...而這裏有一個問題與信息如何做到這一點http://stackoverflow.com/questions/1346480/how-to-make-a-net-application-large-address-aware(I認爲在VS/CSC中有一個選項,但沒有 - 需要使用與Win32應用程序相同的editbin)。 –

相關問題