Я использую C # 2.0 для многопоточного приложения, которое получает не менее тысячи обратных вызовов в секунду от неуправляемой dll и периодически отправляет сообщения из сокета. GUI остается в основном потоке.
Мое приложение в основном создает объект при запуске и периодически во время выполнения в течение короткого периода времени.
Проблема, с которой я сталкиваюсь, - это периодический всплеск задержки (измеряемый отметкой времени функции в начале и в конце), который, как я полагаю, возникает при запуске GC.
Я запустил perfmon и вот мои наблюдения ...
Размер кучи Gen0 является плоским с всплеском каждые несколько секунд с периодическим всплеском.
Размер кучи Gen1 всегда в рулоне. Вверх и вниз
Размер кучи Gen2 следует за циклом. Оно продолжает расти, пока на некоторое время не станет плоским, а затем падает.
Коллекции 0 и 1 поколения постоянно растут в диапазоне от 1 до 5 единиц.
Коллекции Gen 2 постоянны.