|
從去年起我們的服務(wù)器偶爾會拋出OutOfMemoryException,即沒有足夠的內(nèi)存繼續(xù)執(zhí)行程序時引發(fā)的異常。服務(wù)器內(nèi)存加到4G也仍會出現(xiàn)該問題。軟件是UO的第三方模擬器。事實上,從任務(wù)管理器里,可以看到軟件占用了約1G左右的內(nèi)存,當(dāng)然因為GC的緣故,實際軟件使用的內(nèi)存在600M左右。為避免超過1G多內(nèi)存的占用,并拋出Outofmemory異常,設(shè)定在內(nèi)存占用到一定值時進行強制GC,一下子可以減去幾百兆,但終究是沒徹底解決問題。 最近國外論壇貼了相關(guān)處理方法,在此轉(zhuǎn)述一遍,希望對遇到類似問題的朋友有幫助。
對于2G內(nèi)存的服務(wù)器,.Net只能使用1.2G內(nèi)存。 對于4G內(nèi)存的服務(wù)器,.Net可使用2.4G內(nèi)存。但系統(tǒng)需要進行如下設(shè)置: 1、 在boot.ini文件中增加/3GB的開關(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、在命令行窗口,進入該目錄,如 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內(nèi)存了
.Net 1.2好像沒解決這個問題,新的2.0還沒空做測試,不知道2.0在內(nèi)存管理和GC的性能上有無
|