zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    git
    oracle object_id和data_object_id的区别
    statspack系列8
    statspack系列7
    statspack系列6
    statspack系列5
    statspack系列4
    statspack系列3
    statspack系列2
    MySQL源码之两阶段提交
  • 原文地址:https://www.cnblogs.com/lovegmail/p/5378616.html
Copyright © 2011-2022 走看看