Могут ли быть утечки памяти в .NET?Если да, то какой инструмент лучше? - PullRequest
0 голосов
/ 02 февраля 2012

Я работаю над приложением с управляемым кодом на C # 4.0. Я использую внешние библиотеки DLL, которые не соответствуют CLS.

Нужно ли мне средство обнаружения утечки памяти, чтобы проверить утечки памяти в DLL? Если да, какие инструменты лучше?

Ответы [ 4 ]

2 голосов
/ 02 февраля 2012

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

Если вам нужно разобраться с утечкой, я бы предложил ANTS Profiler , однако это имеет свои пределы, поэтому его следует принимать в каждом конкретном случае.

1 голос
/ 02 февраля 2012

Вы можете использовать бесплатные WinDbg, SOS и GCRoot для диагностики утечек памяти.Дэвид Энсон показывает вам, как на этом блоге .Rico Mariani также имеет хорошее сообщение в блоге об использовании WinDbg и SOS.

Другие продукты, такие как JustTrace , dotTrace и ANTS Profiler может помочь вам диагностировать подобные проблемы.

1 голос
/ 02 февраля 2012

Вы можете использовать такие инструменты, как CLR Profiler, VSTS Profiler, .NET Memory Profiler или CLR Profiler, чтобы проверить размер вашего объекта и т. Д. Программа NET.

1 голос
/ 02 февраля 2012

Да, в .NET возможны утечки памяти.Их даже можно получить, когда вы используете только библиотеку базовых классов, поскольку многие из этих классов сами обращаются в неуправляемый код.

Однажды у меня произошла утечка памяти, потому что я не избавилсяSystem.DirectoryServices.SearchResultCollection после перечисления по ней.

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

...