Лучший способ отследить утечку памяти (C #), видимую только в ящике одного клиента
-
02-07-2019 - |
Вопрос
Каков наилучший способ отследить утечку памяти, которая обнаружена только в окне тестирования / выпуска одного клиента, и нигде больше?
Решение
(Этот вопрос довольно забавный, потому что я отслеживаю утечку памяти, которой нет на моем компьютере ...)
Другие советы
Попробуйте профилировщик памяти, например Профилировщик Муравьев.
Если у пользователя постоянно возникает проблема, возьмите stackdump и проанализируйте стандартным способом
Это либо код, либо данные, либо конфигурация.
Поскольку вы говорите, что код не является ошибочным в 100% случаев, я бы обвинил конфигурацию.Возьмите копию конфигурации (и, при необходимости, некоторых данных) и попытайтесь воспроизвести проблему;вы не узнаете, что нашли и исправили это, без воспроизведения.
Наконец, решите эту проблему с помощью профилировщика памяти.
Вот один из вариантов:Дайте им коробку, в которой нет утечки.
Иногда дело не в коде.
Редактировать:Это либо код, либо данные, либо конфигурация.
Или .NET Framework, операционная система, драйверы, IIS или COM (например, автоматизация Excel) или так далее.
Мое предположение заключается в том, что утечка памяти невоспроизводима, кроме как в окне клиента (к которому разработчику не может быть разрешен доступ для отладки).
PerfMon может быть полезен (http://dotnetdebug.net/2005/06/30/perfmon-your-debugging-buddy/).Существует несколько счетчиков, которые могут помочь сузить круг утечек ресурсов, с какой скоростью и т.д.