Dot-Net

如何創建(32 位).NET 應用程序以使用 3 GB RAM?

  • March 2, 2021

我正在創建一個需要使用大量 RAM 的 .NET 應用程序 (C#)。我最近知道在 32 位版本的 Windows XP 上我只能使用 2 GB,除非我使用/3Gb開關,並IMAGE_FILE_LARGE_ADDRESS_AWARE在執行檔頭中設置標誌。但是由於我正在開發一個 .NET 應用程序,我想我不能直接修改執行檔,可以嗎?那麼,我應該怎麼做才能讓我的應用程序使用 3 GB?

.NET exe 仍然是標準的 PE 文件;因此您可以嘗試使用editbin /LARGEADDRESSAWARE來設置標誌,但請注意,如果您使用 ClickOnce 之類的東西(因為它維護文件的加密雜湊),這將不起作用。

但是,請注意,就單個對象/數組的最大大小而言,您仍然具有相同的 .NET 限制。對於大量記憶體,x64 是一個更好的主意。

/3GB 開關位於作業系統引導載入程序上,而不是您的應用程序上。(編輯:它也存在於本機 C/C++ 編譯器中,但不存在於 C# 編譯器中)就您的應用程序而言,它會請求記憶體,而作業系統會將其提供給您的程序。但是,在您的程序使用虛擬記憶體之前,您可以再訪問 1 個 gig(可能,您並不總是獲得 3gig,具體取決於您的硬體外圍設備)。

正如 Marc Gavell 向我指出的那樣,您可能需要在您的 exe 上執行命令“editbin /LARGEADDRESSAWARE my.exe”作為建構後選項來啟用此功能。在這裡找到了一位 MS 人的參考資料:MS 論壇

我可以建議你看看你的程序,看看你是否可以重新架構它以使用更少的記憶體。也許您可以處理較小塊的數據集,而不是嘗試將整個數據一次載入到記憶體中?

引用自:https://stackoverflow.com/questions/464458