У меня есть приложение, которое обрабатывает большое количество мелких объектов, например, 2000 сообщений в секунду. Одно сообщение составляет примерно 100 байт, может быть, меньше. Приложение работало в течение 6 с половиной часов под нагрузкой, и за это время у него было 264 416 0 th gen коллекций,
166 699 1 st gen и 69 608 2 nd gen. Это 11,6, 7,3 и 3 сбора в секунду соответственно.
Вопрос в том, как сделать сборку мусора менее частой?
UPD:
Приложение - это сервер, получающий сообщения от WCF, собирающий их через несколько модулей обработки и сохраняющий их в базе данных.
У меня сложилось впечатление, что GC должен адаптироваться и увеличивать размер генерации через некоторое время, но это явно не тот случай.
UPD 2 : как предложено в ответ Леппи GC в режиме сервера действительно в 10 раз меньше сборов. Также кажется (как описывает это Рихтер), что частые коллекции - не плохая вещь.