Какие лучшие способы для разработчика .NET выслеживать (и избегать) неуправляемый утечки в управляемом приложении?Методы поиска/предотвращения неуправляемых утечек в управляемом коде
Кажется, что есть много отличных ресурсов для отслеживания управляемых утечек, но я не нашел многого в отслеживании неуправляемых утечек в управляемом приложении.
This question связан, но задает вопрос с чисто неуправляемой точки зрения, поэтому многие ответы предполагают, что у вас есть доступ к неуправляемому коду, и никто не упоминает о каких-либо специфических ловушках или методах .NET.
Вот некоторые (очень простые) вещи я пытался:
- DebugDiag. Это выглядит очень многообещающим, и это может сработать для вас, но это случается, когда я разбиваю свое приложение.
- Rational PurifyPlus. К сожалению, также падает мое приложение.
- AQTime (по рекомендации @Reed и @Caelum). Эта программа выглядит потрясающе, но, как и плакат вопроса @Caelum, AQTime также отключает мое приложение.
- Временно удалите код, который создает объекты, которые, как я знаю, используют неуправляемую память.
- Убедитесь, что приложение избавляется все объекты, которые реализуют
IDisposable
я должен отметить, что я был в состоянии успешно профиля другого управляемого приложения (которое протечка неуправляемой памяти), используя профайлер выше. Пожалуйста, попробуйте, если у вас есть неуправляемая утечка.
Вы правы: найти способ использования этих профилографов - очень хорошая идея. Несмотря на то, что мое полное приложение вылетает при запуске через профилировщики, у меня есть успех, профилирующий небольшое, негерметичное приложение для воспроизведения. –