GC.Collect()方法放在哪里比较合适
程序运行占内存40多M,觉得应该手工清零内存优化一下,但是又不知道GC.Collect()放在哪里比较合适?
放在Try Catch语句的Finally语句块中?这么做的话要每个Try Catch里都手工回收一下吗?
放在timer中定时清理?这样操作太频繁(比如一秒一次)的话会不会GC.Collect()本身也会消耗内存降低效率?
请大家多多指教啊
------解决方案--------------------当你new出了个大对象,使用完毕后希望立即回收,释放内存,可以用一下GC.Collect(),效果很明显;
否则,一般都不用GC。
------解决方案--------------------+1 手动设置为NULL可以加速GC判断对象是否还有引用 等GC执行的时候有效果
------解决方案--------------------实际上,如果“效果很明显”仅仅是你看进程内存占用的瞬间数据的,那么大可不必注重这种“效果”。因为GC会自动被唤起,而手工调用Collect往往是在不恰当的时候去被调用,反而让你的程序变慢了。
你应该注意将应用程序逻辑单元细分,不要写一个1000行的大循环,而应该写100个只有10行的小程序来完成这个类似于循环的控制。这样,你也无需总是去给什么变量赋值为null。
------解决方案--------------------LZ可以看看自己new的对象是否有状态 如果没有状态干脆搞成静态的或者用单例 读写频繁那就看看是不是把非托管资源释放了
Timer这个没什么大问题