日期:2014-05-19  浏览次数:20773 次

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

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