Can anyone explain why this causes a memory leak? static void Main() { Thread outerThread = new Thread(delegate() { while (true) { Thread innerThread = new Thread(delegate() { }); innerThread.Start(); Thread.Sleep(10); } }); outerThread.Start(); Application.Run(); }By the way, if instead of creating an inner thread I just create an object, the garbage collector does its job and no memory leak occurs.