C#中程序员可以不用考虑内存拉圾的处理了吗? 刚刚从c++转移过来,看到了C#中有个GC(拉圾回收器)可以自动回收拉圾的,好像这个东西自己有很好的回收拉圾内存的策略,不用自己再在析构函数中显示的写回收拉圾的code了,虽然系统也提供了System.GC.Collect()方法来显示要回收内存,但是微软又不提倡用它,说要影响GC的性能。这个意思是不是C#程序员再也不用考虑内存拉圾问题了?(当然非内存的资源还是要显示的释放:) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 基本上是的,因为CLR会隔一段时间检测一下内存,如果发现某些资源没在使用状态,就调用GC来释放,Java也是这种机制。 差不多了~只要有了CLR,利用GC回收,MS今天在.net frameword programming又看了一边 一般大对象用完后就手工释放,小对象就让CLR自动处理吧。 建议你不用,.net有专门的线程在不断的检测和做回收工作。当然你可以分析一下其使用的回收机制,看是否满足你的要求。再补充一些方法也可以。另外.net底层上是否不会发生内存泄漏还不好说。连JAVA有回收机制,其JVM都有这方面漏洞。 非托管资源,继承IDisposable接口,显示调用Dispose方法释放资源,效率应该比较高 有 Dispose 的类尽量调用 Dispose 就好了反正 ms 这里根本就是不明不白我们的服务器(2003)经常出现占用好多内存的情况,就算定时调用 Collect 也不太解决问题,后来多加了几个处理进程好多了 GC好有必要,我写了个多线程的东东,内存种是隔一段时间就爆长,后来在多处加了GC就使内存维持在一个稳定的水平了,不过cpu就出现了波浪型的变化.但总算解决了问题.另外,有很多对象如果是可以设置null的或可以dispose的就尽量把他们设置了,null的会被gc收回而dispose就不用说了. to: superfishmanweb我现在也遇上你同样的问题.请问为啥要"在多处加了GC"?这样做有啥好处,怎么加?每个线程执行完都加呢?环是定时调用呢?望指教! 特殊情况下需要考虑,在资源占用很大的时候也会考虑WeakReference什么的 实现了IDispose的对象是必须调用Dispose方法,托管资源可以不管,非托管资源一定要写Dispose和析构函数释放,否则永远不会释放 我手动家gc.collect()和dispose(),但是,内存都不会少,即使用了上面的方法,还是要等gc来回收?这个地方就是不明不白,用好还是不用好?用多线程可以解决吗? 在非拖管代碼中﹐應該在調用后顯式回收好一點的(個人認為)。比如說你在C#中調用Excel之類的COM,在調用完后﹐應該Null然后GC.Collect()好一點的。否則Excel的進程是要等到窗體關閉后才能關閉甚至更長時間才能關閉的。 前面new了一个没有实现IDispose的对象,要如何在后面手动释放内存? .net说实话俺也搞了好长时间了,现在还是不明不白,俺只是觉得占用资源比较大(想当然)的时候才收工释放。俺的观点是“虽然办公室里有大姐定时打扫垃圾,如果碰上垃圾太多的时候,也要主动叫她去打扫”。 万能的CSDNer,初学者求正则表达式 WCF部署成windows程序,如何保证不会断开连接? PointToClient(Location) 的输出为什么 不变化呢。 添加自定义类的方法C# 哪里有发送短信的免费WebService?? 在internet网络上进行TCPIP通信,怎样才能达到信息的实时传输。可以交互并且非常迅速的方法和例子 怎么能删除字符串中重复的空格阿 新手疑惑 C#控制台程序 大神来看下这个正则表达式如何转义呢 如何暂停程序的执行?? winform,我用GDI+在窗体上画图,可是我怎样能把我画的保存为一张图片呢? 请教:关于splitter控件的问题!
反正 ms 这里根本就是不明不白
我们的服务器(2003)经常出现占用好多内存的情况,就算定时调用 Collect 也不太解决问题,后来多加了几个处理进程好多了
我现在也遇上你同样的问题.请问为啥要"在多处加了GC"?这样做有啥好处,怎么加?每个线程执行完都加呢?环是定时调用呢?望指教!
但是,内存都不会少,
即使用了上面的方法,还是要等gc来回收?
这个地方就是不明不白,用好还是不用好?
用多线程可以解决吗?
比如說你在C#中調用Excel之類的COM,在調用完后﹐應該Null然后GC.Collect()好一點的。否則Excel的進程是要等到窗體關閉后才能關閉甚至更長時間才能關閉的。
俺的观点是“虽然办公室里有大姐定时打扫垃圾,如果碰上垃圾太多的时候,也要主动叫她去打扫”。