close

為何 ASP.NET 系統處理程序佔去太多記憶體?應該如何處理?

通常並不是很多人注意到這個問題。但是如果您發現網站為什麼速度愈來愈慢,您會不會懷疑是因為 ASP.NET 程式佔去太多記憶體,而導致系統變慢、甚至當掉的關係?

如何確定是記憶體的問題呢?您可以開啟工作管理員,在「處理程序」頁籤下,找一下 w3wp.exe (如果您使用 IIS 6.0) 或 aspnet_wp.exe (如果您使用 IIS 5.0),觀察它的記憶體使用量。如果您發現它已經佔去幾百 MB,而且還在不停的往上增加的話,那麼大致上就是記憶體的問題。

若按照正常的狀況,這個處理程序所佔用的記憶體是忽大忽小的,但總是侷限在一個合理的範圍之中。至於到底多大或多小才算合理,得視您的網站的結構和使用者的上線狀況而定。但它佔用記憶體的大小不應該無止盡的增加,否則就是異常。

有什麼方式會造成不正常的記憶體使用情況呢?首先,請注意您是不是在產生專案時使用 Debug 模式而非 Release 模式。使用 Debug 模式會造成系統的負擔,所以請在最後一次做 build 時切換到 Release 模式。同時,請把 Web.config 中的 debug="true" 和 trace enabled="true" 改掉。

其次,您是否在程式中加上了太多的字串相加(例如 "abc" & "cde" & "def"...)動作?這麼做的結果,事實上是使得記憶體中佔用了太多根本不必要的空間,也同時浪費了運算的資源。ASP.NET 提供了 StringBuilder 這個類別,請好好的運用它。

如果您尚未安裝 .Net Framework 1.1 SP1 的話,請儘快安裝。因為 SP1 所採用的記憶體區塊大小為 16M,比之前的 64M 來得有效率,造成記憶體問題的機率也變低了。


其次,檢視您的程式是否使用了許多佔用記憶體的物件,包括龐大的 DataSet 物件、Session 物件、Cache 等等。如果有的話,應該考慮採用其它的寫法。
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 hsiung03 的頭像
    hsiung03

    hsiung.博格 ERP軟體

    hsiung03 發表在 痞客邦 留言(0) 人氣()