![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Proger10 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Вопрос такой. В больших программах создаётся много экземпляров классов. И эти классы бывают огромных размеров.
Когда не нужны какие-то созданные экземпляры классов, нужно ли их удалять? Чтобы разгрузить память.. Если они в данное время не нужны, чего их в памяти-то держать, прально? Как создавать в книгах пишу, а вот как удалять их чего-то я ещё не сталкивался ![]() |
|||
|
||||
almagnit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 3.4.2008 Репутация: 1 Всего: 7 |
Точно не знаю, но количество загружаемых в программу класов через import влияет на время загрузки программы, а в процессе работы
Java самостоятельно регулирует загруженность имеющейся памяти. |
|||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Обнуляй ненужные ссылки, в Java встроен Ктулху, он объекты сам зохавает потом
![]() -------------------- ![]() |
|||
|
||||
Proger10 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Обнулять ненужные ссылки это что имеется ввиду?
Что-то типа:
типа такого? |
|||
|
||||
vdim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 19.4.2008 Репутация: нет Всего: нет |
по научному Ктулху называется сборщик мусора. Периодически он прогоняет программу на предмет не используемых ссылок и сам их удаляет. Из-за чего java считается тормознутой ибо найти все, что не используется, это не delete на совесть программистам оставить.
|
|||
|
||||
Proger10 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
А нельзя ли отключать этот сборщик мусора? Чтобы тормоза оставить на совесть программиста.
Так что-то и не очень понял я, нужно ли таким образом удалять то, что в данный момент не нужно (экземпляры созданных классов) или постоянно хранить их в памяти? |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Сборщик мусора отключить нельзя, можно только меньше мусорить или помогать мусорщику, устанавливая указатели на ненужные объекты в null.
|
|||
|
||||
Skynin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 6 Всего: 10 |
Помочь сборщику мусора можно еще с помощью WeakReference
Обычное применение - держать так большие кэшируемые данные, которые можно перечитать, если их уже Ктулху зохавал. |
|||
|
||||
JSpark |
|
||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 18.10.2006 Репутация: нет Всего: нет |
Разработчики java как раз уходили от ручного удаления объектов, в отличии от си, для этого был разработан сборщик мусора. Данный подход позволяет сократить время на разработку, так как частая ошибка в си коде, это забывание удалить ненужные объекты, после чего такие программы становятся не работоспособными и на исправление тратится время.
Конечно надо, это делается присвоением null объекту после чего сборщик мусора сам удалит объект. В принципе можешь не занулять к примеру в таком случае: ты создал локальный объект и после отработки метода он будет все равно собран ну конечно если только он не возвращается из этой функции, сборщик удаляет объекты на которые в программе больше нет ссылок. Это сообщение отредактировал(а) JSpark - 30.1.2009, 10:58 |
||||
|
|||||
ecologist |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 452 Регистрация: 28.2.2007 Репутация: 2 Всего: 9 |
Да вообщем еще хорошо посмотреть как можно настроить параметры сборщика мусора - его влияние можно снизить кардинально.
От того, что ты будешь обнулять ссылки - легче не станет. Это же ссылки - т.е. они ссылаются на объект в памяти. Все равно процесс удаления объектов берет на себя Ктулху. Читайте маны - http://java.sun.com/javase/technologies/hotspot/gc/index.jsp А для настройки (прямо оттуда) - Java 1.5 - http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html Java 1.4 - http://java.sun.com/docs/hotspot/gc1.4.2/ Читайте |
|||
|
||||
Proger10 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
но.. есть ли тогда смысл заNULLять ненужные объекты? |
|||
|
||||
fixxer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Пока есть хотя бы одна ссылка на объект он не может быть зохаван. -------------------- ![]() |
||||
|
|||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Наиболее часто обнуление происходит при работе с локальными переменными - т.е. к окончанию работы функции. Локаные переменные "завершают" свою работу и обнуляюся. И в подавляющем большинстве случаев их досрочное обнуление мало что решает. Так что я бы не заморачивался. Тут ecologist в какой-то мере прав. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Есть один случай (а можеть быть и больше) когда нужно специальное зануление:
Нитка крутится в бесконечном цикле, пока не установлено terminate = true, связанные с ней ресурсы не будут удалены
|
|||
|
||||
VSergeyV |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 299 Регистрация: 9.5.2006 Где: Новосибирск Репутация: нет Всего: 3 |
Можно сделать это принудительно
gc() - Runs the garbage collector. В IDE IntelliJ IDEA в углу есть градусник - сколько памяти занято и кнопка чтобы юзер мог сам вызывать garbage collector. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |