2011年1月3日 星期一

可用記憶體上限

作者: vintw (陽光好青年) 看板: C_and_CPP
標題: Re: [問題] 可用記憶體上限??
時間: Thu May  7 15:21:11 2009

在32bit Windows裡面,每一個processs可以直接存取的虛擬記憶體限制是2GB,
剩下的兩GB則是分給核心記憶體使用,程式無法直接存取。
如果在程式中要求了超過2GB的記憶體,就會直接出現錯誤強制程式關閉。
就算你的電腦上面有4GB的記憶體,每一個process還是只能用到2GB。

以下方法可以把程式中可以直接存取記憶體的上限提高到3GB,
但是如果你有開啟PAE的話,總共可用的記憶體會被限制在16GB。

1.在boot.ini中加入/3GB 參數

boot.ini裡面大概長的像這樣...
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP
Professional" /3GB /noexecute=optin /fastdetect /usepmtimer

加完要重新啟動才會生效。

2.在Linker中加上LARGE ADDRESS AWARE參數
如果是VC系列的話,是/LARGEADDRESSAWARE
果是gcc的話,是--large-address-aware

然後重建整個程式,應該就可以用超過2GB的記憶體了。

參考資料:
http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx
http://www.microsoft.com/taiwan/whdc/system/platform/server/pae/paedrv.mspx

不太確定有沒有遺漏的部分,如有誤還望各位先進不吝指教。

※ 引述《kulaice (我有勇氣去?嗎)》之銘言:
: 請問各種C程式可以的記憶體上限可以超過2GB嗎
: 因為我寫的需要使用到很大的記憶體,偏偏差不多2GB就當了
: 上網查了是應用程式只能用2GB??不確定
: 因為我估購查到在boot.ini檔加/3GB參數說可以用到3GB
: 但再執行一樣2G就當了(還是說需要再設定哪??)
: 我的記憶體共有3GB,所以應該要吃完才當,但還有剩就當了...
: 所以請問各位可以用超過2GB的記憶體嗎
: 以XP 32bit討論...
: 各位使用的C程式軟體
: 有無特別設定??如何設定@@
: 感謝m(_ _)m

--
Sincerely.
--VinTW

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.174
※ 編輯: vintw           來自: 140.121.197.174      (05/07 15:22)

沒有留言:

張貼留言

您好.本資料庫並非第一手資料.如果你有對文章作者的詢問,意見與需求,請自行找尋文章作者並提供意見,謝謝.