好吧,我已经读过几个有关它的主题,但就这样吧。假设我有一个应用程序,基本上我会时不时地单击一个按钮,几分钟内会发生很多事情,然后它可能会再空闲一个小时,或者可能只是一分钟。在这一切结束之后,调用 GC.Collect 不是一个很好的情况吗?我的意思是,我确实知道就在那一刻我不会使用我的应用程序,GC 无法猜测它。
我发现有几个人极端地不建议调用 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 存在的原因。
-
调用它的好处是快速释放垃圾,通常你会关心这种情况,如果
- 你处于低内存情况并且想要急于收集,如果你处于低内存情况,GC无论如何都会很激进,并且如果机器上的内存压力很高,GC会自动启动
- 如果你想避免陷入内存不足的情况并且你想急切地收集。
希望这可以帮助。
Thanks
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)