Может ли объект .NET SqlConnection вызвать утечку памяти, если он не закрыт?
============================================================================

Я понимаю, что вам нужно позвонить`.Close()` на`SqlConnection` объект для освобождения основного соединения SQL обратно в пул, когда вы закончите с ним; но если вы воздерживаетесь от этого, остается ли объект .NET в памяти даже после выхода из области видимости? Я спрашиваю, потому что я работаю с некоторым кодом, который испытывает утечки памяти, и я заметил, что`SqlConnection` объекты не закрываются и не удаляются (они создаются, открываются, а затем просто выходят из области видимости).

 что соединение с сервером SQL остается открытым, а это означает, что соединение недоступно для чего-то другого, что необходимо для связи с этим сервером.

Соединение будет закрытов конце концов если он выходит из области видимости и собирает и вывозит мусор, но пока неизвестно, когда это произойдет. Ваше приложение может иметь только столько соединений SQL, открытых в данный момент времени, а сам сервер SQL может поддерживать только столько соединений.

Думайте об этом как о ответственном человеке, заимствующем книгу из библиотеки. Если вы не вернете книгу, она в конечном итоге вернется в библиотеку, потому что однажды вы умрете, и когда кто-то уберет ваш дом, они найдут книгу и отправят ее обратно в библиотеку. Но если бы все так делали, было бы очень трудно найти книги в библиотеке. Таким образом, мы не проверяем книгу, пока мы фактически не готовы прочитать ее, и мы возвращаем ее, как только закончим.

То же самое с соединениями SQL. Не открывайте их, пока они вам не понадобятся, и закройте их как можно скорее, когда закончите с ними. И, как показано в других ответах,`using` упрощает его, гарантируя, что соединение будет удалено (что также закрывает его) без использования`try/finally`.



Если все еще есть утечки памяти, то сообщите об ошибке в Microsoft ... Если вы правильно утилизируете, утечки памяти там не должно быть



 как инструктировать базу данных для обновления «с помощью» и «попробовать поймать»

Преимущество использования в том, что он автоматически закрывается.

другой метод - попытка поймать строительство

Хотя использование в основном используется для экзотического сценария, опция catch тоже может быть полезной, но требует большего набора текста.

И если я правильно напомню, через 20 минут или около того сеанс IIS по умолчанию прекращается, если не происходит никаких действий.