在64位元的WIN7中,32位元的程式能使用到超過4G以上的記憶體位址嗎?
小弟的疑問是,OS能定址到,但32位元程式不見得能使用得到吧?
或者是我的誤解,求大師解說.
99.99 wrote:
在64位元的WIN7中,32位元的程式能使用到超過4G以上的記憶體位址嗎?
(恕刪)
一般沒特別修改過的32位元單一應用程式,只能定址(使用)最多2GB的記憶體空間
與作業系統是否為64位元無關
雖說可以在程式設計時即採取任務並行,或用一些特殊手段(像LAA)避開這個問題
但本質上仍無法根治且非常麻煩
其他的不多說,詳見微軟MSDN
Memory Limits for Windows Releases
jerry20530 wrote:
x64 win7 本來就能使用超過4GB 主記憶體
根用什麼軟體 毫無關聯 x86軟體本來就相容(恕刪)
我想您應該誤解了原PO的意思了



99.99 wrote:
在64位元的WIN7中,32位元的程式能使用到超過4G以上的記憶體位址嗎?
小弟的疑問是,OS能定址到,但32位元程式不見得能使用得到吧?
...(恕刪)
一般32位元程式的user space(data+instruction)是2GB,如果用 /LARGEADRESSAWARE 編譯,在64位元Windows下的user space(data+instruction)可到4GB。
另外32位元程式可以使用AWE API,去跟32-bit/64-bit Windows作業系統要求使用超過user space大小的記憶體,總使用量是可以超過4GB的,但僅限於存放程式的data,32位元的SQL Server 2005/2008,就屬於這類的應用程式。
用AWE API要來的記憶體只能放data這點其實還好,因為程式碼本身很少會肥大到需要GB級的空間,佔位置的,通常都是data。
因此純就您的問題回答,在64位元Windows下,單一32位元應用程式例如SQL Server是可以是使用超過4GB記憶體的。在32位元作業系統下,單一32位元應用程式也是可以是使用超過4GB記憶體的。





























































































