У меня есть сервис WCF, работающий на основе MSMQ. Память постепенно увеличивается со временем, указывая, что существует своего рода утечка памяти. Я выполнил сервис локально и контролировал некоторое использование счетчиков PerfMon. Общие байты управляемой "кучи" памяти CLR остаются относительно постоянными, в то время как частные байты процесса увеличиваются со временем. Это приводит меня полагать, что существует своего рода неуправляемая утечка памяти. Предположение, что неуправляемая утечка памяти является проблемой, как я решаю проблему? Есть ли какие-либо инструменты, которые я мог использовать, чтобы дать мне подсказки относительно того, что вызывает неуправляемую утечку памяти? Кроме того, весь мой сервис делает, читает из транзакционной очереди и пишет в базу данных, все как часть транзакции DTC (обработанный под капотом путем требования транзакции по контракту на обслуживание). Я ничего не делаю явно с COM или DllImports.
Заранее спасибо!
Вы можете использовать Windbg для анализа процесса Heap. Есть несколько статей и шпаргалок, показывающих, как это сделать, например Обнаружение утечки памяти с помощью Windbg
Ants Profiler заслуживает внимания. Насколько я помню, вы можете скачать пробную версию.
Этот блог поможет вам, если вы хотите узнать о windbg ( http://www.microsoft.com/whdc/devtools/debugging/default.mspx ) .