title: When windows releases threads?
body: <p>Our product consumes a lot of windows resources, such as socket handles, memory, threads and so on. Usually there are 700-900 active threads, but in some cases product can rapidly create new threads and do some work, and close it. 
  I came across with crash memory dump of our product. With <strong>~*</strong> windbg command I can see  817 active threads, but when I run <em>!handle</em> command it prints me these summary:</p>
  
  <pre>
  Type            Count
  None            15
  Event           2603
  Section         13
  File            705
  Directory       4
  Mutant          32
  WindowStation   2
  Semaphore       789
  Key             208
  Process         1
  Thread          5766
  Desktop         1
  IoCompletion    308
  Timer           276
  KeyedEvent      1
  TpWorkerFactory 48
  </pre>
  
  <p>So, actually process holds 5766 threads. So, my question, When Windows actually frees handles for process? Is it possible some kind of delay, or cashing? Can someone explain this behavior?
  I don't think that we have handle leaks, but we have weird behavior in legacy part of system with rapidly creating and closing threads for small tasks. Also I would like to point, that we unlikely run more than 1000 threads simultaneously, I am pretty sure about this. 
  Thanks.</p>