I found this piece of code inside System.Web.ISAPIRuntime using Reflector
public void DoGCCollect() { for (int i = 10; i > 0; i--) { GC.Collect(); } }
Can anyone comment on this? Is there a reason to do GC.Collect() in a loop? Why 10 times and not 3, 5 or 20? Analysis indicated that it’s not used inside .net framework but it’s public so I suppose that IIS could call it…
edit :
Just for clarification purposes : I have never called GC.Collect and I have no intentions of using it. I know it’s a bad idea in most (if not all) cases. The question is why .net framework does it. Thanks for all your answers.
I don’t think you’re going to get a better explanation that ‘one of Microsoft’s programmers is pretty clueless, and apparently, no one else bothered to look at his code before it was checked in’. 😉
It does look scary though.
It’s a fairly common response to bugs you don’t understand though. For whatever reason, you’re trying to call the GC, and somehow, calling it doesn’t seem to solve your problem (perhaps the real problem was just that you should wait for the finalizer thread or something), so the naive solution is obviously ‘Well, I’ll just keep calling it then’.
Similar to pressing ‘print’ repeatedly until your document is printed.
Perhaps you should submit it to thedailywtf.com though.