Увеличение потребления памяти не обязательно указывает на утечку ресурсов, поскольку сборка мусора не является детерминированной и, возможно, еще не началась.Даже если вы «отпускаете» объекты, CLR может хранить их, пока считает, что в системе достаточно ресурсов.
Если вы знаете, что do на самом делеЕсли у вас есть утечка ресурсов, вы можете работать с объектами, которые имеют явное закрытие / удаление в рамках своего контракта (предназначено для конструкций с использованием ...).В этом случае, если у вас есть контроль над типами, вы можете пометить удаление объектов из их реализации Dispose, чтобы убедиться, что они действительно были удалены, если вы можете жить с управлением жизненным циклом, просачивающимся в интерфейс типа.
Если вы сделаете последнее, то можно провести модульное тестирование, которое имеет место по контракту.Я делал это в некоторых случаях, используя специфический для приложения эквивалент IDisposable (расширяя этот интерфейс), добавляя опцию для запроса, был ли удален объект.Если вы реализуете этот интерфейс явно для своего типа, он не будет сильно загрязнять его интерфейс.
Если вы не контролируете типы, о которых идет речь, профилировщик памяти, как это предлагается в другом месте, - это инструмент, который вам нужен,(Например, dotTrace от Jetbrains.)