MD5编码的内存泄露

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
原文地址:https://www.cnblogs.com/lovegmail/p/5378616.html