you can make a try like this below:
string[] acc=new string[1000000]; for(int ci=0;ci<acc.Length;ci++) { acc[ci]=@"efgewfw"+ci; } acc=null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); 手工释放我觉得有用,一个大的对象置成null的时候内存明显降低。 我记得有篇文章上说的是,如果在做大型运算之前是可以手动释放一次内存的,可以防止在运算开始之后发生回收,那样的话对系统占用就非常大了。 GC搜集垃圾的的时候是靠判断是否存在对象的引用 所以obj = null;就等于释放,而实际上这个操作并不保证对象所占内存立即释放,要等GC循环到这里时才会释放... 大型对象最好实现IDisposable接口 而关于GC.Collect(),速度比较慢,能不用则最好别用