我正在经历 GC Gen 2 收集以一系列方式发生的情况 - 一个接一个地发生,这使我的应用程序挂起长达 30 秒。这主要发生在执行 GUI 操作时,例如启动动画或导航到另一个站点(卸载和加载新控件)。它随机发生。与此同时,根本没有 Gen 2 系列。在进行导航之前将 LatencyMode 设置为低并在完成后将其设置回来并没有多大帮助。
事实:
- .net 4.0,WPF
- Gen 0 堆大小在 3 到 6 MB 之间
- Gen 1 堆大小在 0 到 3 MB 之间
- Gen 2 堆大小相当恒定 ~330 MB
- LOH 堆大小相当恒定 ~70 MB
Gen 2 和 LOH 如此之大,因为我在字典中缓存了许多对象,以便在我的时间关键型应用程序中快速访问它们。
我也有一个很好的 perfmon 屏幕截图,但不允许发布它(所以防止新用户的垃圾邮件):(
有任何想法吗?