Классическая утечка в .NET встречается реже, потому что память освобождается автоматически. Обычно причина другая: объекты остаются связанными с долгоживущим обработчиком событий, кешем или статическим полем и потому не освобождаются, хотя больше не нужны.
Исследуют это воспроизведением на стенде — отдельном компьютере, настроенном как рабочий, — со снятием снимков состояния памяти в разные моменты и сравнением между ними: видно, какие объекты накапливаются и что их удерживает. Параллельно следят за общим потреблением процесса: если оно растёт, а объём управляемых объектов нет, память расходуется вне управляемой области — незакрытыми соединениями, файлами, графическими ресурсами.
Условия воспроизведения должны совпадать с реальными: объём и характер данных, длительность работы, нагрузка. Вывод сопровождают указанием, при каком сценарии дефект воспроизведён, и оценкой того, наступают ли последствия при заявленном в задании режиме эксплуатации. Дефект это или условия эксплуатации, решает по этим данным суд.