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