MD5CryptoServiceProvider 若是屢次使用會產生內存溢出,以下這樣調用幾百萬次就會出現內存
public
static
string
MD5Encode(
string
source)
{
if
(
string
.IsNullOrEmpty(source))
return
source;
MD5 md5 =
new
MD5CryptoServiceProvider();
byte
[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(source));
return
BitConverter.ToString(s).Replace(
"-"
,
""
);
}
緣由:
MD5CryptoServiceProvider 調用了非託管對象,錯誤的使用方法致使非託管對象的沒法釋放
解決辦法:
方法一:調用md5.Dispose()方法
方法二:使用MD5CryptoServiceProvider方法時使用using方法,讓程序自動釋放相關資源。
此問題在開發LogParser時遇到過,後來經過using解決了,可是未詳細瞭解具體致使緣由,經過閱
讀博客發現了詳細描述,在此進行記錄,
詳細描述:
http://my.oschina.net/runescape/blog/552942