Sim*_*ker 10 c# clr performance garbage-collection
我在.net 4.0下看到一些不寻常的垃圾收集模式,我无法解释,任何建议都会受到赞赏.
在我的程序运行的不同时间,G2收集计数开始增加,GC%时间接近100%.这会在停止前持续一段时间(请参阅下面的性能监视器屏幕抓取).在此期间,CLR GC ETW事件的PerfView跟踪显示许多长时间运行的G2集合正在以"AllocSmall"的原因背靠背触发.
任何人都可以了解一下:
LowMemory似乎不是问题,因为GC启动事件不会将其作为原因代码(http://msdn.microsoft.com/en-us/library/ff356162.aspx).我们也看到了类似的情况,其中G0集合背靠背发生.
编辑:有人建议触发器可能超出某个阈值.鉴于仍有可用的内存,我希望G2堆在这一点上扩展,而不是让GC捶打试图收集.
编辑:下面发布的图片分辨率远高于StackOverflow显示 - 只需在浏览器选项卡中直接打开图片链接即可.

系统物理内存不足。
托管堆上分配的对象使用的内存超过了可接受的阈值。这意味着托管堆上已超出可接受的内存使用阈值。该阈值随着进程的运行而不断调整。
调用 GC.Collect 方法。在几乎所有情况下,您不必调用此方法,因为垃圾收集器连续运行。此方法主要用于特殊情况和测试。
看起来#2 就是这种情况,也就是说你已经“超越了可接受的阈值”。微软的模糊性+1。