.Net的Outofmemory異常及大內存使用
發(fā)表時間:2024-06-19 來源:明輝站整理相關軟件相關文章人氣:
[摘要]從去年起我們的服務器偶爾會拋出OutOfMemoryException,即沒有足夠的內存繼續(xù)執(zhí)行程序時引發(fā)的異常。服務器內存加到4G也仍會出現(xiàn)該問題。軟件是UO的第三方模擬器。事實上,從任務管理器里,可以看到軟件占用了約1G左右的內存,當然因為GC的緣故,實際軟件使用的內存在600M左右。為避免超...
從去年起我們的服務器偶爾會拋出OutOfMemoryException,即沒有足夠的內存繼續(xù)執(zhí)行程序時引發(fā)的異常。服務器內存加到4G也仍會出現(xiàn)該問題。軟件是UO的第三方模擬器。事實上,從任務管理器里,可以看到軟件占用了約1G左右的內存,當然因為GC的緣故,實際軟件使用的內存在600M左右。為避免超過1G多內存的占用,并拋出Outofmemory異常,設定在內存占用到一定值時進行強制GC,一下子可以減去幾百兆,但終究是沒徹底解決問題。
最近國外論壇貼了相關處理方法,在此轉述一遍,希望對遇到類似問題的朋友有幫助。
對于2G內存的服務器,.Net只能使用1.2G內存。
對于4G內存的服務器,.Net可使用2.4G內存。但系統(tǒng)需要進行如下設置:
1、 在boot.ini文件中增加/3GB的開關。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="????" /3GB
2、在命令行窗口,進入該目錄,如 cd "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin"
3、運行l(wèi)ink命令: link -edit -LARGEADDRESSAWARE server.exe (server.exe為你的.Net程序)
4、你的server.exe就可以使用到2.4G內存了
.Net 1.2好像沒解決這個問題,新的2.0還沒空做測試,不知道2.0在內存管理和GC的性能上有無