В настоящее время я профилирую свое приложение с помощью шкалы времени dotTrace. Я обнаружил, что в G C тратится много времени, что ожидается, но не ожидается, что я вижу, как много пользовательских потоков приостанавливаются во время сбора фона.
скриншоты профилировщика:
![profiler screenshots](https://i.stack.imgur.com/bs5ym.png)
Из рисунка видно, что у меня два потока выполняют некоторую работу с процессором, затем возникает «фон» G C и первый поток приостанавливается чуть позже и вторая немедленно отстранена.
![threads blocked](https://i.stack.imgur.com/jZw9v.png)
Вы можете видеть, что пользовательские потоки действительно заблокированы потоком сборщика мусора.
Я знаю, что может быть передний план, блокирующий G C Gen 0 и Gen 1 во время фона G C. Но это не тот случай, поскольку все G C относятся к Gen 2.
Я создал базовое c решение для воспроизведения на github: https://github.com/isaevdan/BackgroundGCSuspendsThreads