IDisposable и, таким образом, Dispose не используется для уменьшения нагрузки на память, хотя в некоторых случаях это возможно, но вместо этого используется для детерминированной очистки.
Учтите, что вы создаете объект, который поддерживает активное и открытое соединение с вашим сервером базы данных. Это соединение использует ресурсы, как на вашем компьютере, так и на сервере.
Конечно, вы можете просто оставить объект, когда закончите с ним, и в конце концов он будет забран сборщиком мусора, но предположим, что вы хотите убедиться, что по крайней мере ресурсы освобождены, и, таким образом, соединение закрыто, когда вы закончите с этим. Здесь IDisposable . Dispose вступает в игру.
Используется для очистки ресурсов, управляемых объектом.
Однако он не освободит управляемую память, выделенную для объекта. Это все еще остается для сборщика мусора, который через некоторое время включится, чтобы сделать это.
У вас действительно есть проблема с памятью, или вы просто смотрите на использование памяти в диспетчере задач или аналогичном и говорите "это немного завышено"??
Если последнее, то вы должны просто оставить это на время. .NET будет запускать сборку мусора чаще, если у вас меньше доступной памяти, поэтому, если вы не находитесь в ситуации, когда у вас возникнет или, возможно, вы подозреваете, что скоро у вас возникнет условие переполнения памяти, у вас, вероятно, не возникнет никаких проблем .
Позвольте мне объяснить, что я имею в виду под "бегать реже".
Если у вас 8 ГБ памяти на вашем компьютере и работают только Windows и Блокнот, большая часть этой памяти будет доступна. Теперь, когда вы запускаете свою программу, даже если она загружает второстепенные блоки данных в память, вы можете продолжать делать это в течение длительного времени, и использование памяти будет постоянно расти. Точно, когда GC включится и попытается уменьшить объем памяти, я не знаю, но я почти гарантирую вам, что вы удивитесь, почему он так высок.
Давайте просто ради аргумента скажем, что ваша программа в конечном итоге будет использовать 2 ГБ памяти.
Теперь, если вы запустите свою программу на машине, у которой меньше доступной памяти, GC будет появляться чаще и сработает при более низком пределе, что может держать использование памяти ниже 500 МБ или, возможно, даже меньше.
Здесь важно отметить, что для того, чтобы получить точное представление о том, сколько фактически требуется приложению памяти , требуется , тогда вы не можете полагаться на диспетчер задач или аналогичные способы его измерения, вам нужно что-то более целевое.