dev*_*ium 18 .net c# vb.net garbage-collection
好的,我已经阅读了几个关于它的主题,但是在这里.让我们想象一下,我有一个应用程序,基本上每次我都会点击一个按钮,很多事情会发生几分钟,然后它会闲置一小时,或者只是1分钟.不会在整个结束好的情况后调用GC.Collect吗?我的意思是,我知道就在那一刻我不会使用我的应用程序,GC也无法猜测它.
mfa*_*mkh 28
我可以看到有几个人对于不建议调用GC.Collect变得极端.
GC.Collect是有原因的,这里是我建议何时以及为何调用GC.Collect.
一般情况下,不要担心调用它,GC会很好地调整自己,并且会做正确的事情.
有时,你最终会遇到这样的情况,你确定这是正确的调用时间,上面描述的情况恰好是调用它的时候,实际上Asp.Net在某些点上调用了GC.Collect.与你描述的相似.
GC很聪明地调用GC.Collect,如果你调用GC.Collect,GC可以覆盖你的决定但仍然不收集(当你调用GC.Collect来选择这个行为时你必须设置一个标志),这是调用GC.Collect的推荐方法,因为你仍然让GC决定是否是收集的好时机.
不要把我的推荐作为调用GC.Collect的一般声明,你应该总是避免调用它,除非你真的需要调用它,你所描述的情况就是为什么GC.Collect就在那里.
通过调用它可以获得的好处是快速释放垃圾,通常你会关心这种情况
希望这可以帮助.
谢谢
Ste*_*ons 19
在原型化或构建应用程序并测试其性能之前,担心调用GC.Collect几乎总是过早优化.GC通常非常善于在适当的时间收集内存.当您的应用程序处于空闲状态时,它肯定会运行一个集合,尤其是在系统存在内存压力的情况下.
遵循良好的世代GC分配实践(小对象,短期使用等)更为重要,您可能会获得您想要的性能特征.如果您仍然没有所需的性能,在分析和良好的设计之后,您可能会考虑将GC.Collect作为解决方案.
几乎从来没有一个很好的理由打电话GC.Collect().
在你的情况下,绝对没有理由称之为.如果您闲置一小时,GC 将进行收集.
| 归档时间: |
|
| 查看次数: |
12110 次 |
| 最近记录: |