Как исследовать неуправляемые утечки памяти в.NET?

У меня есть сервис WCF, работающий на основе MSMQ. Память постепенно увеличивается со временем, указывая, что существует своего рода утечка памяти. Я выполнил сервис локально и контролировал некоторое использование счетчиков PerfMon. Общие байты управляемой "кучи" памяти CLR остаются относительно постоянными, в то время как частные байты процесса увеличиваются со временем. Это приводит меня полагать, что существует своего рода неуправляемая утечка памяти. Предположение, что неуправляемая утечка памяти является проблемой, как я решаю проблему? Есть ли какие-либо инструменты, которые я мог использовать, чтобы дать мне подсказки относительно того, что вызывает неуправляемую утечку памяти? Кроме того, весь мой сервис делает, читает из транзакционной очереди и пишет в базу данных, все как часть транзакции DTC (обработанный под капотом путем требования транзакции по контракту на обслуживание). Я ничего не делаю явно с COM или DllImports.

Заранее спасибо!

27
задан Brandon 17 May 2010 в 14:57
поделиться

3 ответа

Вы можете использовать Windbg для анализа процесса Heap. Есть несколько статей и шпаргалок, показывающих, как это сделать, например Обнаружение утечки памяти с помощью Windbg

4
ответ дан 28 November 2019 в 05:56
поделиться

Ants Profiler заслуживает внимания. Насколько я помню, вы можете скачать пробную версию.

-1
ответ дан 28 November 2019 в 05:56
поделиться

Этот блог поможет вам, если вы хотите узнать о windbg ( http://www.microsoft.com/whdc/devtools/debugging/default.mspx ) .

http://blogs.msdn.com/tess/default.aspx

4
ответ дан 28 November 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: