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
  • 相关阅读:
    020-请你说一说app测试的工具
    栈的压入、弹出序列
    包含min函数的栈
    顺时针打印矩阵
    二叉树的镜像
    树的子结构
    链表中倒数第k个结点
    调整数组顺序使奇数位于偶数前面
    数值的整数次方
    矩形覆盖
  • 原文地址:https://www.cnblogs.com/lovegmail/p/5378616.html
Copyright © 2011-2022 走看看