Я думаю, "что является утечкой памяти" и, "что является эффектами" вопросы хорошо уже, были отвечены, но я хотел добавить еще несколько вещей по другим вопросам...
, Как понять, просачивается ли Ваше приложение
, Один интересный путь состоит в том, чтобы открыться perfmon и добавить трассировки для # байты во всей "куче" и # Генерал 2 набора в каждом случае, смотрящем просто на Ваш процесс. Если осуществление конкретной функции заставляет общие байты увеличиваться, и та память остается выделенной после набора следующего поколения 2, Вы могли бы сказать, что функция пропускает память.
, Как предотвратить
, Другие хорошие мнения были даны. Я просто добавил бы, что, возможно, обычно пропустил , причина утечек памяти.NET состоит в том, чтобы добавить обработчики событий к объектам, не удаляя их. Обработчик событий, присоединенный к объекту, является формой ссылки на тот объект, так предотвратит набор даже после того, как все другие ссылки пошли. Всегда не забывайте отсоединять обработчики событий (использующий -=
синтаксис в C#).
утечка уходит, когда процесс выходит, и что относительно взаимодействующего с COM?
, Когда Ваш процесс выходит, все с отображенной памятью в его адресное пространство исправлены ОС, включая любые COM-объекты, подаваемые от DLLs. Сравнительно редко COM-объекты могут быть поданы от отдельных процессов. В этом случае, когда Ваш процесс выходит, можно все еще быть ответственны за память, выделенную в любых серверных процессах COM, которые Вы использовали.
Вы пытаетесь установить объявление типа содержимого в заголовке сообщения, отправляемого на почтовый сервер? Если это так, вы должны установить это так, в самой строке:
Content-Type: text/html; charset=UTF-8