日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET中的OutOfMemoryException

發布時間:2025/3/15 asp.net 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET中的OutOfMemoryException 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在博客園看到了一位園友寫的文章《如何處理OutOfMemoryException異常?》,于是想和大家交流一下ASP.NET中出現OutOfMemoryException的問題。

實際上,在ASP.NET Web服務器上,ASP.NET所能夠用到的內存,通常不會等同于所有的內存數量。在machine.config配置文件中, <processModel>中有一個屬性“memoryLimit”,這個屬性的值是一個百分值,默認為“60”,即指定了ASP.NET進程(在任務管理器中大家就可以看到ASP.NET的進程,IIS5中為aspnet_wpIIS6中為w3wp)能夠使用所有物理內存的60%。當ASP.NET使用的內存量超過這個限額時,IIS會開始自動回收(recycle)進程,即創建一個新的進程去負責應付Http請求,而將舊進程所占用的內存回收。

當我們有一臺很大內存的服務器時,“memoryLimit”這個值是需要進行適當的調整的。比如我們準備了一臺4G內存的服務器,那么4G×60%2.4G。但是,對于Win32操作系統,一個進程所能占用的所有內存空間只有2G。當ASP.NET進程占用的內存開始達到2G時,由于它并沒有達到2.4G回收閾值,所以IIS不會啟動recycle進程操作,但是由于Win32的限制,實際上已經不能給這個進程分配更多的內存了,于是,OutOfMemoryException就很可能會被拋出了。為了避免這樣的情況,我們就必須將“memoryLimit”適當調小,以讓IIS更早的進行進程回收。

微軟推薦的ASP.NET進程占用內存是不超過60%,并最好使計算出的實際值不超過800M。就是說,對于一臺4G內存的服務器,最好將“memoryLimit”屬性設置成“20”。設置一個適當的回收閾值,讓IIS適時的進行進程回收,對于保證整個服務器的穩定運行,避免OutOfMemoryException是非常重要的。

IIS6中,ASP.NET進程的回收閾值不再由 配置節中的“memoryLimit”屬性決定,而是由IIS管理器中的應用程序池配置中的設置決定。

但是,即使正確設置了這些配置,也不能保證完全避免OutOfMemoryException的發生,原因可能是多樣而復雜的,比如內存回收操作可能耗時太多等等。開發人員要注意的,就是在代碼中時刻牢記不要無謂的使用和浪費內存。:)

如果你有一臺大內存的服務器,同時對Win32操作系統中對于進程最高使用2G內存的限制很郁悶,可選的解決方法有兩個:
1
、使用/3GB模式啟動計算機,方法參加文后的鏈接
2
、使用Windows Server 2003 64bits Edition

資源鏈接:
Microsoft IIS 5.0 Process Recycling Tool
,使IIS5具有類似IIS6的進程監視回收功能
Microsoft KB: Information on Application Use of 4GT RAM Tuning
Microsoft KB: 4 GB RAM 調試功能和物理地址擴展開關介紹

總結

以上是生活随笔為你收集整理的ASP.NET中的OutOfMemoryException的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。