Оптимизация профилировщика .NET Memory исчезает с производства - PullRequest
2 голосов
/ 03 января 2012

Я использую профилировщик памяти (.NET Memory Profiler от Scitech), тщательно прорабатывая различные фрагменты кода и улучшая характеристики генерации мусора в моей программе. Счетчики показывают, что сборка мусора была значительно сокращена.

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

Кто-нибудь видел что-нибудь подобное раньше?

EDIT

Я понимаю, что трудно получить ответ, когда вопрос кажется неопределенным. Просто интересно, если достаточное количество глазных яблок вызовет полезную подсказку.

1 Ответ

0 голосов
/ 03 января 2012

Если ваша производственная версия работает на компьютерах с меньшим объемом памяти, вы будете намного чаще преодолевать порог сбора мусора, что приведет к увеличению количества сборщиков мусора.

.NET программы имеют тенденцию растягиваться в памяти, чем больше памяти вы предоставляете им, и обычно машины для разработки имеют намного лучших ресурсов, чем машины, на которых ваши конечные пользователи будут запускать ваши программы (это прекрасно и понятно, но вы должны помнить об этом).

...