/LARGEADDRESSAWARE 選項通知鏈接器應用程序可處理大於 2 GB 的地址。 在 64 位編譯器中,默認情況下啟用此選項。 在 32 位編譯器中,如果未在鏈接器行上指定 /LARGEADDRESSAWARE,則將啟用 /LARGEADDRESSAWARE:NO。
如果用 /LARGEADDRESSAWARE 來鏈接應用程序,則 DUMPBIN /HEADERS 將顯示該效果的信息。
在 Visual Studio 開發環境中設置此鏈接器選項
-
打開該項目的“屬性頁”對話框。 有關詳細信息,請參見設置 Visual C++ 項目屬性。
-
單擊“鏈接器”文件夾。
-
單擊“系統”屬性頁。
-
修改“啟用大地址”屬性。
不需要largeaddressaware所有windows程序就都能用到2g內存,2g以上才需要largeaddressaware,在2g以內如果你的程序在分配大內存時報outofmemory exception,一般來說有以下幾種情況:
1.可用內存不夠
2.你在vs2005中用調式方式啟動程序,並且在項目屬性的調式選項里你啟用了vs2005自帶宿主方式調試。vs2005自帶的調試宿主環境似乎只提供1g內存的地址空間。
3.使用了動態調整的集合對象但未指定Capacity。如ArrayList,Hashtable等。當在需要請求大內存的情況下使用動態調整的集合對象必須強制Capacity上限,因為集合動態調整Capacity所需要的內存數是Count數的3倍。假如你空閑2g內存,使用ArrayList時未指定Capacity,capacity是采用翻倍增長策略的,當Capacity用到1g的時候再添加元素.net會請求2g空間,這樣在把所有元素copy到新的內存前總共開銷要3g內存.