本帖最后由 lxcnn 于 2008-10-10 19:14:10 编辑

解决方案 »

  1.   

    在内存分配的函数内调用是不会回收的,因为引用这些内存的变量还没有出Scope.
      

  2.   

    那你把            byte[] buffer1 = new byte[512];    提出来试试
    我觉得应该不是这里的问题
      

  3.   

    楼主可用
       buffer1=null;一试, 
       如果内存没有减少,则可能是 "  CS_GetIDCardInfo(buffer1, 512); //调用动态库,填充buffer1           "
       函数内部有问题,可注释掉试试;
     否则是应用该函数的窗体,在关闭时没有释放内存空间;如:
                Form1 frm1 = new Form1();
                frm1.ShowDialog();
                //加上如下语句
                frm1.Close();
                frm1.Dispose();
                frm1 = null;
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  4.   

    根据楼主的反映,每次增加100k,
    应不是buffer1 没有释放的问题,应是象窗体这样的大家伙没有释放的问题;
      

  5.   

    问题应该不是回收不及时造成的。
    首先你得检查你得异步操作。如果你调用了BeginXXX,并且传递了一个准备带出值地object,之后永远没有EndXXX. 
    那这个object就被定在了内存里。GC不可以回收它,因为底层的操作还期待着把数据写入这个地址去。
    比如Socket的,BeginRead,BeginSend等就是这样的。
      

  6.   

    当然了,如果你有一个session或容器,并且不断的加入新的object。那内存的增长是对的,
    不属于内存泄漏。
      

  7.   

    还有就是用任务管理器来监测内存泄漏的不是什么好办法。你可以试试SOS。
      

  8.   

    结贴   估计是DLL的问题~~·郁闷!