我可以看到有几个人对不建议调用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都将变得很激进,并且在计算机上的内存压力很高时,它将自动启动
- 如果您要避免陷入内存不足的情况,并且希望热心收集。
希望这可以帮助。
谢谢
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)