Подтвердить что ты не робот

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

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

Спасибо заранее!

4b9b3361

Ответ 3

Убедитесь, что вы закроете клиента службы после его использования. что-то вроде

try {
... do work ...
Close();
} ... exception handling ... {
Abort();
}

Ответ 4

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