C#程序出现内存溢出错误的解决办法
上周一個C#開發(fā)的站點出現(xiàn)了內(nèi)存溢出錯誤:“引發(fā)類型為“System.OutOfMemoryException”的異常”
因為頁面眾多一時最初難以確定問題源,找了很久才發(fā)現(xiàn)了導(dǎo)致內(nèi)存溢出的代碼。把這次的方法總結(jié)一下。
癥狀:每個一段時間才會出現(xiàn)內(nèi)存溢出的錯誤,服務(wù)器上會出現(xiàn)大量的頁面請求被堵塞。回收iis程序池后,會短暫正常,但是過一段時間后又出現(xiàn)內(nèi)存溢出,時間間隔長短不一,沒有規(guī)律。
解決步驟:1,判斷是某個頁面被請求到時引發(fā)的內(nèi)存溢出錯誤。
????????????? 2,尋找有問題的頁面
?????????????????? 存在內(nèi)存溢出錯誤代碼的頁面,當(dāng)被請求時,應(yīng)該不會被執(zhí)行結(jié)束。
?????????????????? 所以,通過OnPreInit方法,在所有頁面被請求時,將該頁面的地址,請求時間記錄到數(shù)據(jù)庫中。每次請求都會在數(shù)據(jù)庫中增加一條記錄。
?????????????????? 在頁面執(zhí)行到OnUnload方法時,再將該頁面的總執(zhí)行時間更新到上面提到的請求記錄中。(新增時,總執(zhí)行時間默認為-1)
??????????????????
通過上述方式,分析幾次內(nèi)存溢出發(fā)生時,沒有被執(zhí)行結(jié)束的頁面。最終確定的問題頁面所在,修改代碼上傳后,內(nèi)存溢出問題解決。
轉(zhuǎn)載于:https://www.cnblogs.com/tc_Sky/archive/2010/07/29/1787764.html
總結(jié)
以上是生活随笔為你收集整理的C#程序出现内存溢出错误的解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 辅助类——记录错误信息
- 下一篇: 这3句屁话,关键时刻能救命