Я использую профилировщик памяти (.NET Memory Profiler от Scitech), тщательно прорабатывая различные фрагменты кода и улучшая характеристики генерации мусора в моей программе. Счетчики показывают, что сборка мусора была значительно сокращена.
Или так кажется. Потому что, когда я запускаю программу за пределами профилировщика, GC, кажется, происходят так же часто, как и до всех этих оптимизаций! Я сделал тривиальные проверки (это та же самая программа, параметры компиляции одинаковы, машина / использование одинаковы, а входы одинаковы), и мне интересно, есть ли что-то в том, как работает профилировщик о котором мне не сообщают. Естественно, профилировщик должен размещать хуки где-то в программе, чтобы просматривать всю отображаемую информацию. Но наверняка без этих хуков вы думаете, что все будет работать более гладко, а не меньше?
Кто-нибудь видел что-нибудь подобное раньше?
EDIT
Я понимаю, что трудно получить ответ, когда вопрос кажется неопределенным. Просто интересно, если достаточное количество глазных яблок вызовет полезную подсказку.