Мое приложение выделяет большой объем памяти (миллионы мелких объектов в сумме несколько гигабайт) и удерживается на нем в течение длительного времени.
- Разве .NET тратит время на проверку всех этих данных, чтобы сделать GC на нем?
- Как часто происходит Gen 2 GC (тот, который проверяет все объекты)?
- Есть ли способ уменьшить его частоту или временно подавить ее?
- Я точно знаю, когда я готов для сбора большого количества памяти, есть ли способ для этого оптимизировать? В настоящее время я вызываю GC.Collect(); GC.WaitForPendingFinalizers(); в то время.
Обновление: Счетчик Perf "% времени в GC" показывает в среднем 10,6%.