首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GC.Collect()

GC.Collect()
EN

Stack Overflow用户
提问于 2009-07-19 03:48:17
回答 7查看 13.6K关注 0票数 20

好的,我已经阅读了几个关于它的主题,但是下面是它。假设我有一个应用程序,基本上每隔一段时间我就会点击一个按钮,几分钟内会发生很多事情,然后它可能会空闲一小时,或者可能只有一分钟。在这一切结束之后,调用GC.Collect不是一个很好的情况吗?我的意思是,我知道在那一刻我将不会使用我的应用程序,GC无法猜到它。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-07-21 04:45:08

我可以看到,有几个人已经走到了极端,不建议调用GC.Collect。

GC.Collect的出现是有原因的,下面是我关于何时以及为什么调用GC.Collect的建议。

在一般情况下,不用担心调用它,GC自己调得很好,会做正确的thing.

  • Sometimes,你最终会遇到这样的情况:你确定这是调用它的合适时机,你上面描述的情况正是调用它的合适时机,事实上,GC.Collect在某些点上调用GC.Collect与你描述的类似。

  • GC在调用GC.Collect时很聪明,如果你调用了GC.Collect,GC可能会覆盖您的决定,但仍然不收集(您必须在调用GC.Collect时设置标志才能选择此行为),这是推荐的调用GC.Collect的方式,因为您仍然让GC决定这是否是收集的好时机。

  • 不接受我的建议是调用GC.Collect的一般语句,您应该始终避免调用它,除非您确实确定需要调用它,这种情况就是GC.Collect存在的原因。

  • 调用它的好处是快速释放垃圾,通常情况下,您会关心这种情况,如果

代码语言:javascript
复制
1. You are in low memory situation and want to be eager about collection,  if you are in low memory situation, the GC will be aggressive anyway and will kick in automatically if the memory pressure is high on the machine 
2. If you want to avoid getting in low memory situation and you want to collect eagerly.

希望这能有所帮助。

谢谢

票数 30
EN

Stack Overflow用户

发布于 2009-07-19 03:57:57

在原型化或构建应用程序并测试其性能之前,担心调用GC.Collect几乎总是为时过早的优化。GC通常非常擅长在适当的时候收集内存。它肯定会在应用程序空闲时运行一个集合,特别是在系统中存在内存压力的情况下。

更重要的是遵循好的代际GC分配实践(小对象、短使用等)。你可能会得到你想要的性能特征。如果您仍然没有获得所需的性能,那么在分析和良好的设计之后,您可以考虑将GC.Collect作为一个解决方案。

票数 20
EN

Stack Overflow用户

发布于 2009-07-19 03:51:32

几乎没有一个好的理由去调用GC.Collect()

在您的情况下,完全没有理由调用它。如果您空闲了一个小时,GC将执行它的收集。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1149197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档