powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / освобождение памяти
8 сообщений из 8, страница 1 из 1
освобождение памяти
    #32484402
Турист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим, у меня есть функция.
В ней я пишу:
Dim command1 As New SqlClient.SqlCommand("select * from table1", connection1)
Перед тем, как выйти из функции, мне нужно писать command1.Dispose() ?
Или command1 удалится автоматически при закрытии функции?

Заранее благодарен за полезную информацию.
...
Рейтинг: 0 / 0
освобождение памяти
    #32484511
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе не нужно. При выходе из области видимости обьект будет помечен как удаленный и сборщик освободит его память вместе со всем поколением.

Если хочешь наверняка то вызывай Dispose. И потом сразу Gc.Collect();


Magnus
...
Рейтинг: 0 / 0
освобождение памяти
    #32484565
Турист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо за полезную информацию.
...
Рейтинг: 0 / 0
освобождение памяти
    #32484617
Турист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как будет правильней?

1)
dim textbox1 as new textbox
dim textbox2 as new textbox
...
textbox1.dispose
textbox2.dispose
Gc.Collect()

или

2)
dim textbox1 as new textbox
dim textbox2 as new textbox
...
textbox1.dispose
Gc.Collect()
textbox2.dispose
Gc.Collect()
...
Рейтинг: 0 / 0
освобождение памяти
    #32484958
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз уж начал, обьясню еще кое что, но тема обьемная и для глубокого понимания нужно смотреть мануалы.
dispose вызывать самому можно но особой необходимости в этом нет. Только в редких случаях когда возникают проблемы из за не освобожденного обьекта.
То же самое относится и к Gc.Collect() - этот метод будучи вызван без параметров освобождает память ВСЕХ обьектов ВСЕХ поколений. Его нужно вызывать только один раз. Но снова же, только если есть какие либо проблемы. Если нет, то и не трогай его.

Т.е. вариант 1.
Хотя как уже сказал в Gc.Collect() нет необходимости. Все будет собрано автоматически.

Magnus
...
Рейтинг: 0 / 0
освобождение памяти
    #32485789
Турист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо за полезную информацию
...
Рейтинг: 0 / 0
освобождение памяти
    #32924320
Фотография BusyMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Magnus23 При выходе из области видимости обьект будет помечен как удаленный и сборщик освободит его память вместе со всем поколением.
А когда запускается сборщик мусора? Сам запускается или не всегда?
А если сам, то как можно запустить самому?
...
Рейтинг: 0 / 0
освобождение памяти
    #32924727
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BusyMan Magnus23 При выходе из области видимости обьект будет помечен как удаленный и сборщик освободит его память вместе со всем поколением.
А когда запускается сборщик мусора? Сам запускается или не всегда?
А если сам, то как можно запустить самому?

освобождение будет не ведомо когда, но коллектор восновном активно активизируется если приложению не хватает памяти, так что нет ни какой 100% гарантии, что твой объект, который давно никому не нужен не провесит до конца работы приложения.
Ну а сделать это принудительно мона так
Код: plaintext
1.
2.
GC.Collect()
GC.WaitForPendingFinilizers()
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / освобождение памяти
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]