c#编写了一个软件,但现发现程序运行占用内存,越来越大,使用了Dispose()来释放窗体,控件资源,并使用System.GC.Collect()强制CLR回收资源 ,但好像收效不大。请问有什么好地解决办法?

解决方案 »

  1.   

    释放一个 s 字符串的内存[DllImport("KERNEL32.DLL", EntryPoint = "RtlZeroMemory")]
    public static extern bool ZeroMemory(IntPtr Destination, int Length);string s ;
    s = "123123123";
    GCHandle gch = GCHandle.Alloc( s ,GCHandleType.Pinned );
    ZeroMemory(gch.AddrOfPinnedObject(), s.Length * 2);
    gch.Free();
      

  2.   

    如果楼主确认自己把窗体 空间 还是数据(dataset,datatable等等) 都释放了 
    那就让.net自己管理内存吧
    我也有发现 用C#写个再小的程序也是要占用一定百分比的内存,
    超过后.net自己会释放掉一部分的
      

  3.   

    比较郁闷或许是自己水平太菜。编了一个稍大的软件,内存问题一直没有较好的解决。不知是不是.net内存回收机制自己有问题。但我以尽力去操控资源了