好的,我已经阅读了几个关于它的主题,但是下面是它。假设我有一个应用程序,基本上每隔一段时间我就会点击一个按钮,几分钟内会发生很多事情,然后它可能会空闲一小时,或者可能只有一分钟。在这一切结束之后,调用GC.Collect不是一个很好的情况吗?我的意思是,我知道在那一刻我将不会使用我的应用程序,GC无法猜到它。
发布于 2009-07-21 04:45:08
我可以看到,有几个人已经走到了极端,不建议调用GC.Collect。
GC.Collect的出现是有原因的,下面是我关于何时以及为什么调用GC.Collect的建议。
在一般情况下,不用担心调用它,GC自己调得很好,会做正确的thing.
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.
希望这能有所帮助。
谢谢
发布于 2009-07-19 03:57:57
在原型化或构建应用程序并测试其性能之前,担心调用GC.Collect几乎总是为时过早的优化。GC通常非常擅长在适当的时候收集内存。它肯定会在应用程序空闲时运行一个集合,特别是在系统中存在内存压力的情况下。
更重要的是遵循好的代际GC分配实践(小对象、短使用等)。你可能会得到你想要的性能特征。如果您仍然没有获得所需的性能,那么在分析和良好的设计之后,您可以考虑将GC.Collect作为一个解决方案。
发布于 2009-07-19 03:51:32
几乎没有一个好的理由去调用GC.Collect()。
在您的情况下,完全没有理由调用它。如果您空闲了一个小时,GC将执行它的收集。
https://stackoverflow.com/questions/1149197
复制相似问题