1. 程式人生 > >windows 應用程式2g記憶體限制

windows 應用程式2g記憶體限制

我也是網上聽說的,32位系統最多能分配的記憶體是2^32 也就是差不多4G,然後去掉系統佔用的一些亂七八糟的東西,最後分給使用者能控制的地址段是2G

網上有這樣一段話,僅供參考。

32位系統使用超過4GB的實體記憶體也是可以的,但是有一些限制:
1. 必須有那麼多記憶體安裝(廢話)
2. 作業系統要支援PAE(實體地址擴充套件)

就你的需要來說,XP、Win2003標準版是不可能的了,它們支援PAE也只限於4GB實體記憶體,至少要Win2003企業版,支援32GB以上記憶體。

有了作業系統的支援,32位應用程式只需要用AWE API就可以訪問更多的實體記憶體了,AllocateUserPhysicalPages、MapUserPhysicalPages、FreeUserPhysicalPages等等。
注意,用這種方法,分配了10GB記憶體,但是不能線性訪問的,要分次對映(MapUserPhysicalPages)到使用者的2GB地址空間中的一個小視窗,然後通過這個小視窗訪問,類似DOS程式使用EMS、XMS的方法。

在 64 位的 Windows 2003上執行:另一個選擇是在 64 位的 Windows 作業系統上執行32 位的 Domino 伺服器。這樣操作可以將核心的地址空間從分配給 32 位應用程式的地址空間移出,並移入一個獨立的 64 位地址空間。對於採用了 Large Address Aware 選項進行編譯的Domino 7 伺服器,就可以佔用 32 位應用程式可用的使用者地址空間上限(即4 GB)。對於未採用Large Address Aware 選項進行編譯的Domino 6 伺服器,預設情況下仍然有2 GB的使用者地址空間限制。關於在 64 位的 Windows平臺執行32位應用程式,還有其他忠告,請參閱相關資訊。

1. 使用/3GB 引數:如上所述,這個方法是最不可行的,Lotus技術支援通常也不推薦使用者使用。如果您堅持使用這個選項,請考慮加入/userva=2800 引數。因為它潛在的約束,強烈建議在應用於生產環境中之前,先在測試環境中對這個配置進行測試。


應用層(Domino)- /3GB 引數會發揮一定作用;然而,即使啟用這個核心層面的設定,32位程序還是無法使用超過2 GB的使用者地址空間,除非編譯時加入了 /LARGEADDRESSAWARE 引數。在編譯32位可執行程式時必須指定這個引數。

如果系統核心配置了 /3GB 引數,而在編譯可執行程式(.exe)時又未使用Large Address Aware 選項,那麼每個程序可定址的使用者地址空間上限依然是2GB。邏輯正好相反,這多出來的1 GB並沒有還給系統核心,而是在使用者地址空間中被標記成保留塊。這會引發一個問題,即:1 GB的虛擬地址空間就不再可用了。因此,僅當我們考慮對程序用 /LARGEADDRESSAWARE 引數進行編譯時方可使用/3GB 引數。不恰當的使用/3GB 引數非但不能解決什麼問題,反而會引起更多的問題。

相關推薦

windows 應用程式2g記憶體限制

我也是網上聽說的,32位系統最多能分配的記憶體是2^32 也就是差不多4G,然後去掉系統佔用的一些亂七八糟的東西,最後分給使用者能控制的地址段是2G 網上有這樣一段話,僅供參考。 32位系統使用超過4GB的實體記憶體也是可以的,但是有一些限制: 1. 必須有那麼多記憶

獲取安卓應用程式記憶體限制

int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); Log.d("TAG", "Max memory is " + maxMemory + "KB");

讓32位應用程式不再為2G記憶體限制苦惱

最近在做個程式,雖然是小型程式,但是使用的記憶體量卻很大,動輒達到10G。在64位系統上可以輕鬆實現,無奈我是基於32位的系統進行開發,程式還沒跑起來就已經被終止了。      試過很多辦法,包括檔案記憶體對映等,效率不高,而且由於32位應用程式的限制,可用的記憶體地址最高

windows 應用程式崩潰時的記憶體轉儲及dump檔案的分析

1、在現場設定程式崩潰時的自動記憶體轉儲,得到dump檔案        在windows 登錄檔如下項:      //HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/AeDebug

Windows Server 2008 R2 安裝 VS2005 後 發現windows 應用程式 模板沒有了 解決方案

專案模板丟失現象:新建專案時以前的模板找不到了。 專案模板丟失解決辦法:找到 C:/Program Files/Microsoft Visual Studio 8/Common7/IDE/ProjectTemplates目錄(如果你的vs2005安裝在其他盤,前面的C就換成你安裝時的碟符),將

Windows應用程式開發

Windows窗體應用程式開發:WinForm、桌面應用程式,有可執行檔案(.exe)即安裝包。是一種C/S(客戶機/伺服器)架構應用程式 1.Windows窗體應用程式,用視覺化的窗體和控制元件生成豐富介面的,可互動操作的應用程式。從工具箱選擇相應控制元件,拖曳到窗體介面,通過設定其屬性,佈局外觀。雙擊控制

如何安裝和使用Wine,以便在Linux上執行Windows應用程式

如何安裝和使用Wine,以便在Linux上執行Windows應用程式  我來答 分享 舉報 瀏覽 2150 次 1個回答 #不想上班# 今天上班,你最想說點啥? 最佳答案 cincoutvc 來自電腦網路類芝麻團 2017-10-19 在Linux上執行Windows程式需要安裝Wine,

Windows應用程式程序級別統一監控實踐

        一般的系統級別指標監控,更多關注CPU、記憶體、磁碟、網路等執行情況,對應用程式執行時的程序指標關注不夠,導致不能深入瞭解系統執行狀態。本文根據筆者應用實踐,探討一下程序級別監控涉及到的監控內容以及監控方式,供感興趣的同行做參考。  一、         監控內容         眾所周知

windows應用程式【一】hello,world!

     #include <windows.h> #include <stdio.h> int WINAPI WinMain(HINSTANCE hlnstance,HINSTANCE hPrelnstance,LPSTR

符號檔案——Windows 應用程式除錯必備

  Free Build 生成的是終端使用者版本,針對生成的二進位制檔案進行了徹底的優化,禁用了除錯斷言,並剝離了除錯資訊。這樣一來使可執行程式檔案更小,載入更快,使用的記憶體也更小。  Checked Build 生成的是測試和除錯版本。它包含額外的 Free Build 所沒有的錯誤檢查,引數驗證和除錯資

windows應用程式【三】靜態連結庫和動態連結庫

在寫c語言程式時,我們會呼叫標頭檔案 呢麼標頭檔案理論上一定有實現方法 我們可以去檢視標頭檔案一般在你安裝vc目錄下的/vc98/include 來看一下windows.h 但是我們發現windows.h中只是一些定義與宣告 呢麼我們再來看windows.h的標頭檔案 我們開啟wi

windows應用程式【二】建立視窗

我們在建立視窗時需要的過程  關於訊息迴圈 因為處理器同時只能執行一個程式 因此我們需要作業系統去排程程式 因此我們只是將訊息傳給作業系統 等待迴應從而由作業系統來顯示我們需要的視窗 wndproc() 視窗過程負責用來響應某一類視窗收到的各種Windows訊息

Windows應用程式打包成exe檔案(1)- 工具簡單總結

最近有對一個Windows應用程式少許維護和修改。修改之後要釋出新的exe安裝檔案,打包exe檔案時,遇到了很頭疼的問題,還好最後解決了,記錄一下。 Visual Studio版本:Visual Studio 2017 Visual Studio 201

分享個INNO打包Windows應用程式完整例項指令碼

最近手賤,把以前寫的一個完整的INNO打包指令碼給刪了,於是又得到處找資料學習。現在分享一個完整的指令碼程式碼,以後就不會找不到了。指令碼為完整diamante,包括了這些基本的功能:寫登錄檔、檢測程式是否正在執行、呼叫exe、配置生成檔案相關屬性等。 ; 指令碼由 Inn

容器中 Java 應用程式記憶體和 CPU 如何分配?看這一篇就夠了!

出品丨Docker公司(ID:docker-cn)編譯丨小東每週一、三、五,與您不見不散! 隨著2018年的結束,我們將回顧排名前五的最受讀者歡迎的文章。今天分享的第一篇文章,將幫助那些在容器中執行 Java 虛擬機器(JVM)時遇到記憶體和 CPU 大小調整/使用困難的人,本文將解釋如何在 D

Android應用程式記憶體分析(翻譯)(轉)

作者:Tim Bray Dalvik虛擬機器支援垃圾收集,但是這不意味著你可以不用關心記憶體管理。你應該格外注意移動裝置的記憶體使用,在上面記憶體空間是受到限制的。在這篇 文章裡面,我們來看看Android SDK裡面的一些記憶體剖析工具(profiling tools)

Windows應用程式高階控制元件之月曆控制元件--MonthCalendar控制元件

MonthCalendar--月曆控制元件 提供一個直觀的圖形介面,可以讓使用者檢視和設定日期。 允許使用滑鼠進行拖曳,以便選擇一段連續的時間,此段連續的時間包括起始和結束時間 (1)MonthCalendar控制元件以粗體顯示特定日期 步驟: 建立一個DateTime

Windows應用程式除錯必備的--符號檔案(Symbols)

Two different builds of each NT-based operating system exist: The free build (or retail build) of Windows is the end-user version of the operating system.

C# Winform應用程式佔用記憶體較大解決方法整理(轉)

原文:http://www.jb51.net/article/56682.htm 背景: 微軟的 .NET FRAMEWORK 現在可謂如火如荼了。但是,.NET 一直所為人詬病的就是“胃口太大”,狂吃記憶體,雖然微軟聲稱 GC 的功能和智慧化都很高,但是記憶體的回收

獲取Windows應用程式當前焦點控制元件的控制代碼

由於GetFocus只能本身程序呼叫,所以必須呼叫AttachThreadInput函式附加執行緒 HWND wnd;//視窗控制代碼 wnd=GetForegroundWindow();//獲得當前啟用的視窗控制代碼 DWORD SelfThreadId=GetCurre