![]() | |
![]() |
| | Thread Tools | Search this Thread | Display Modes |
#11
| |||
| |||
|
|
I believe that my thread 4 is the finalizer thread. (!threads says (Finalizer) to the right) But the stack for thread 4 is empty. I have experienzed before that the finalizer thread seems to be stopped. Could it be stopped here as well? Yep 4 is the finalizer thread, the finalizer thread is stopped when you are debugging, it's only activated by the GC. |
#12
| |||
| |||
|
|
There are 3000+ objects in the finalize queue, so I don't understand why the finalizer thread isn't finalizing one of them or waiting for items in the queue. I only see an empty call stack for thread 4. |
#13
| |||
| |||
|
|
Willy wrote: But still there is something I don't get, 'why do some objects stay pinned for minutes?', IMO they don't stay pinned but they are re-used repeatedly, and they give you the impression they are pinned for this long period (could be wrong though). Søren wrote: You are probably right that the buffers don't stay pinned for minutes as I suggested. Atleast ten of them could stay around for a long time. But System.IO.ByteBufferPool doesn't keep the same 10 buffer in the cache. A new buffer is allocated if the cache is busy or empty - and any buffer can be returned to the cache, including recently allocated ones. This means that the precious old buffers way back in gen2 can get wasted. And I gues they do get wasted in my case (You state that the buffers look young). Could this be the root of my trouble? That the System.IO.ByteBufferPool only keep 10 buffers around? It would be interesting to try with 100 buffers. |

![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
| |