2011-04-26 59 views
0

我在ASP.Net應用程序中遇到了OOM異常,並發現這可能是由於引發異常時的重字符串操作(如s1 = s1.Replace()s1 = s1.SubString())造成的。OutOfMemoryException是ASP.Net應用程序

如果這些操作是按順序發生的,是否可能從這些操作中獲得OOM異常?請求的數量並不是很多,但在堆中新分配之前,GC是否可能不及時釋放內存?

換句話說:下面的代碼可以給出OOM異常還是會在我們發現OOM異常之前釋放大量未引用的字符串?

string s = "hello world"; 
while (true) 
{ 
    s = s.Replace("h", "h"); 
} 

回答

0

這不是你的問題的答案,如果你想調試困難的內存問題,更多的建議是看看在哪裏看。

我發現Tess Ferrandez是那些難以克服漏洞的非常寶貴的信息來源。她使用了Windbg,它具有相當陡峭的學習曲線 - 但它可以讓你確定什麼是記憶和原因。

我建議她labs開始,如果你有興趣在調試這個,或者也許ASP.Net memory investigation後可能會設置你正確的軌道上