.net Winform 32位桌面應用程序突破系統2G內存限制,解決內存溢出問題


.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。

如果大家有更好的方案和建議,可以評論區留言,互相交流!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM