.net Winform 32位桌面應用程式突破系統2G記憶體限制,解決記憶體溢位問題
32程式的記憶體地址空間只有2G,這2G記憶體除了存盤程式資料外還需要存盤程式本身,程式一旦使用超過1G的記憶體就不太穩定,
出現記憶體溢位的報錯:System.OutOfMemoryException:引發型別為“System.OutOfMemoryException”的例外,而且winform控制元件用的是devexpress,表現出的是大紅叉
解決方案:
如果在不動代碼的情況下,我們可以通過配置開啟/largeaddressaware去突破2G的限制,但是32位程式最大也就是到4G(虛擬地址)
有兩種方法:
第一種是在vs32位程式控制臺執行以下命令(這種比較麻煩,每次編譯完成后,都需要去手動執行):

執行命令:editbin/largeaddressaware 主程式路徑


執行成功
第二種是在vs開發工具的專案屬性->生成事件->后期生成事件命令列中設定如下命令列(相對于第一種比較容易,配置好,編譯完成后自動執行,方便):
call "%VS110COMNTOOLS%..\..\VC\bin\vcvars32.bat"
editbin /largeaddressaware $(TargetPath)

如果可以改成anycpu或者x64位程式,當時是最好的,但是由于受部分32位組件的影響,目前只是把32位程式的記憶體進行了擴大解決,如果超過4G依然會記憶體溢位,所以接下來還是需要從代碼上也進行優化,有條件最好也改成anycpu或x64,
如果大家有更好的方案和建議,可以評論區留言,互相交流!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/427378.html
標籤:.NET技术
上一篇:.NET 7 預覽版 1 發布
