3

我目前正在使用 dotTrace Timeline 分析我的应用程序。我发现很多时间都花在了 GC 上,这是意料之中的,但出乎意料的是,在后台收集期间,我看到很多时间用户线程被挂起。

探查器截图:

分析器屏幕截图

从图像中我看到我有两个线程在做一些 CPU 绑定的工作,然后发生“后台”GC,第一个线程稍后暂停,第二个线程立即暂停。

线程阻塞

您可以看到用户线程确实被垃圾收集器线程阻塞。

我知道在后台 GC 期间可能会有 Gen 0 和 Gen 1 的前台阻塞 GC。但情况并非如此,因为所有 GC 都在 Gen 2 上。

我在 github 上创建了基本的复制解决方案: https ://github.com/isaevdan/BackgroundGCSuspendsThreads

4

0 回答 0