C# 每个finally里面都写GC.Collect()有坏处吗?

 我来答
aiqiang930
2012-11-28 · TA获得超过265个赞
知道小有建树答主
回答量:217
采纳率:0%
帮助的人:270万
展开全部
没好处,垃圾回收机制最好不要控制,一般GC会在最适合的时间进行垃圾回收,频繁调用GC.Collect()反而会造成不必要的资源耗费,因为.NET内部已经分成了3代内存存储,很大程度避免垃圾回收的代价,还有,一般在编译的时候,编译器已经帮你添加了相应的FINALLY了,除非你很明确你使用的资源是否是非托管资源 与该资源耗费的内存量。
更多追问追答
追问
WebRequest、WebClient、Socket、和数据库对象使用的资源是不是非托管资源呢?
追答
一般涉及到 数据流的  比如具有 stream 特性的资源,最好都using()去控制,具体你可以查阅相关类的特性 就像 Socket 很明显就是一个数据流方式的类,具体的细节要看你应用场景了。
新康利0s
2012-11-28 · TA获得超过148个赞
知道小有建树答主
回答量:225
采纳率:0%
帮助的人:88.7万
展开全部
垃圾回收不受控制,也就是说调用GC.Collect()不一定收集,不一定不收集。
有可能有坏处,取决于你的程序。
具体看《CLR via C#》里面对于垃圾收集的描述。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
icefish_527
2012-11-28 · TA获得超过354个赞
知道小有建树答主
回答量:605
采纳率:0%
帮助的人:359万
展开全部
如果你怕资源回收的不及时,用
using()
{
}
把耗资源的代码,比如数据库链接包起来写,执行到using之后,.net会进行内存的强制回收
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6429c2faf
2012-11-28 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:82.9万
展开全部
不太清楚呢?不过有一些资源即使写了gc.collect也不一定回收的掉,感觉还是写程序规范一点比较好
更多追问追答
追问
我在写网页数据采集软件,使用到了WebRequest、WebClient、Socket、和数据库对象,程序很大,有很多的类与方法,所有方法里面的finally都加入GC.Collect()之后,貌似速度变快了,变顺畅了。但是我担心频繁使用GC.Collect(),会造成采集数据的丢失,担心变快只是假象,数据却没有采集到完整的。我是这样设计的:用for循环调用WebClient采集数据,采集完一次就dispose掉,紧接着还用了GC.Collect()进行回收,大约有10万次循环。
追答
这个是可以的,不会地程序有什么影响的,再者说了,webclient封装的好,比直接用socket来的安全
webclient是可以一直用的啊,为什么要采集完一次就dispose掉呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式