GC线程在集合中间等待

时间:2014-03-25 12:09:53

标签: asp.net .net performance garbage-collection

问题:第0代的垃圾收集大约需要1到1.5秒。
CPU使用率低10 - 15%。
GC的时间很长(40 - 60%)。
第1代的升级内存相对较低(400 MB中的1-2 MB)
详细信息:ASP.NET 4.5.1站点,其中Server GC具有16个前台和16个后台GC线程

当使用windbg查看内存转储(大多数处于GC的中间)时,我看到所有前台GC线程都在等待某些事情。这是堆栈(对于所有线程都是一样的):

NTDLL!ZwWaitForSingleObject +是0xA
KERNELBASE!WaitForSingleObjectEx + 0x9A执行
CLR!CLREventWaitHelper2 + 0x38
CLR!CLREventWaitHelper + 0x1F的
CLR!CLREventBase ::威特集团+ 0x70
CLR!SVR :: t_join ::加盟+ 0x106
CLR!SVR :: gc_heap :: plan_phase + 0x9f1
CLR!SVR :: gc_heap :: GC1 + 0xa6
CLR!SVR :: gc_heap :: garbage_collect + 0x357
CLR!SVR :: gc_heap :: gc_thread_function + 0x6c
CLR!SVR :: gc_heap :: gc_thread_stub + 0x7a
...

如何确定GC正在等待什么? GC在收集过程中等待是否正常?

P.S。后台GC线程也处于等待状态。我想他们等待前景GC完成。

0 个答案:

没有答案