我在使用反编译器 Reflector 中发现了这段代码,它来自于 System.Web.ISAPIRuntime。
public void DoGCCollect()
{
for (int i = 10; i > 0; i--)
{
GC.Collect();
}
}
有人能对此发表评论吗?为什么要在循环中执行GC.Collect()?为什么是10次而不是3、5或20次?分析表明它未在.NET框架内使用,但是它是公共的,所以我猜想IIS可能会调用它...
编辑:
仅供澄清:我从未调用过GC.Collect,并且我没有使用它的意图。我知道在大多数情况下(如果不是所有情况),这是一个坏主意。问题是为什么.NET框架要这样做。感谢您所有的回答。
GC.Collect
并不是解决OutOfMemoryException
的正确方法,很可能你只是在保留不该保留的引用。使用分析器找出原因。 - Jon Skeet