日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

OutOfMemoryException問(wèn)題的處理...

 karoc 2006-05-12
 
OutOfMemoryException問(wèn)題的處理
Author:chainet From:Cnblogs
介紹
我所參與做的產(chǎn)品是一個(gè)比較大型的ASP.NET系統(tǒng),在測(cè)試部門和客戶那里,如果長(zhǎng)時(shí)間運(yùn)行,
系統(tǒng)常常會(huì)出現(xiàn)一些OutOfMemoryException的異常。引起內(nèi)存溢出的錯(cuò)誤的原因有很多,主要在服務(wù)器配置方面和代碼編寫兩個(gè)方面可以進(jìn)行優(yōu)化和改進(jìn),避免此類問(wèn)題的出現(xiàn),但完全杜絕是比較困難的。下面是我收集整理的一些解決方法。 

服務(wù)器配置方面

        1.   安裝.NET Framework 1.1 Service Pack 1

補(bǔ)丁部分解決了一些內(nèi)存泄漏的問(wèn)題,下載地址為:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=a8f5654f-088e-40b2-bbdb-a83353618b38 
        2.   使用更多的內(nèi)存

                a.打開(kāi)/3GB Switch(如果你有3GB以上的內(nèi)存)。這個(gè)配置只在Windows 2000 Advanced ServerData Center版本以及Windows Server 2003以上才支持,參見(jiàn):

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt17.asp

http://support.microsoft.com/default.aspx?scid=kb;en-us;820108

                 b.即使你有很多內(nèi)存,但.NET(注意不是ASP.NET工作進(jìn)程,而是.NET整個(gè)使用的內(nèi)存是有一定限制的,可以通過(guò)加大配置使用量來(lái)減少內(nèi)存溢出的發(fā)生。方法如下:

修改machine.config文件,一般在 %System%\Microsoft.Net\Framework\v1.1.4322\CONFIG目錄中, 修改processModel元素中的memoryLimit,大于缺省設(shè)置的60(意味著物理內(nèi)存的60%)。

        3. 回收工作線程

設(shè)置IIS定期清除Work process是避免此異常的一個(gè)較好的方式。但這個(gè)功能是IIS 6.0(也就是Windows 2003上帶的IIS)才支持。

配置方法如下:

修改IIS的應(yīng)用程序池配置,選擇DefaultAppPool(如果你的系統(tǒng)是用這個(gè)池),右鍵點(diǎn)屬性->Recycling Setting,然后選擇根據(jù)情況 修改“Recycle worker processes at the following times:‘等幾項(xiàng)配置,其中定時(shí)回收工作進(jìn)程是一個(gè)比較好的方式,可以避免回收工作進(jìn)程時(shí),引起客戶Session丟失。

Windows 2000 server 上安裝的是IIS 5.0,本身不支持Recycle,但要想實(shí)現(xiàn)這個(gè)功能也不難。微軟針對(duì)IIS提供的IIS5Recycle便是這樣一個(gè)程序,它安裝后以服務(wù)形式提供回收工作進(jìn)程。

安裝說(shuō)明見(jiàn)http://support.microsoft.com/?id=322350

圖片是表示安裝好之后的配置信息! 是不是和IIS6中的一模一樣?


代碼編寫方面的注意問(wèn)題 

1.System.Drawing方面的類使用問(wèn)題

System.Drawing用到了很多系統(tǒng)的資源和非托管代碼,所以使用的時(shí)候要特別小心,注意內(nèi)存泄漏(Memory Leak)例如:BitMap.MakeTransparent方法的使用問(wèn)題:

http://www./247reference/msgs/40/202528.aspx

2.new byte[]問(wèn)題

處理流的時(shí)候常常會(huì)用到new一個(gè)大的byte數(shù)組。但在多用戶情況下會(huì)消耗大量的內(nèi)存。正確的做法應(yīng)該是定義一個(gè)比較小的byte數(shù)組做為緩存,然后循環(huán)使用。如在我們的程序中,有些地方使用不當(dāng),當(dāng)圖片(或附件)過(guò)大或過(guò)多的時(shí)候, new byte[length]就有可能消耗過(guò)多的內(nèi)存。

3.  避免使用大對(duì)象數(shù)組或小對(duì)象大數(shù)組

編程時(shí)同樣要重視效率問(wèn)題(包括內(nèi)存占用問(wèn)題)。

4.Com接口調(diào)用是要注意釋放對(duì)象。

Add by : Huobazi (2005-11-17:03:20)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多