Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Очистка памяти, принудительная 
:(
    Опции темы
serghd
Дата 2.2.2010, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 5.10.2009

Репутация: нет
Всего: нет



Интересует удаление объектов из оперативной памяти (той, что выделена для jvm конечно), а именно в таком случае как если я создал, например, здоровый хеш-массив, пропарсил его и после этого он мне уже не нужен. Runtime.getRuntime().gc() не подходит в связи с трудоёмкостью (работает долго), да и "очистить" мне надо только один объект. Может будет срабатывать присвоение ему null или что можно ещё тут предпринять. 
п.с. буду благодарен за любую информацию в виде проверенных веб-ресурсов касамо работы java с памятью в общем (когда срабатывает сборщик мусора, под какие объекты сколько её выделяется, как это рассчитать и т.п.). 

Это сообщение отредактировал(а) serghd - 2.2.2010, 16:25
PM MAIL   Вверх
LSD
Дата 2.2.2010, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(serghd @  2.2.2010,  16:22 Найти цитируемый пост)
Может будет срабатывать присвоение ему null или что можно ещё тут предпринять.

Это обязательное условие чтобы GC смог его убрать. А вообще просто не парься, когда память подойдет к концу, JVM сама вызовет GC и удалит твой объект.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
afon
Дата 3.2.2010, 03:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 5.4.2008
Где: Украина, Киев

Репутация: нет
Всего: 1



Цитата

А вообще просто не парься, когда память подойдет к концу, JVM сама вызовет GC и удалит твой объект. 

Так то оно так, только когда приходишь на собеседование, тут-то и выясняется, что ты понятия не имеешь как работает сборщик мусора smile А значит - не специалист...
PM MAIL WWW   Вверх
LSD
Дата 3.2.2010, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(afon @  3.2.2010,  03:27 Найти цитируемый пост)
Так то оно так, только когда приходишь на собеседование, тут-то и выясняется, что ты понятия не имеешь как работает сборщик мусора smile А значит - не специалист... 

Можно подумать что есть много народу за пределами Sun, которые на самом деле представляют как работает GC. И самое главное, кто вообще сказал, что это необходимое условие для написания хороших программ на Java.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
afon
Дата 4.2.2010, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 5.4.2008
Где: Украина, Киев

Репутация: нет
Всего: 1



>>И самое главное, кто вообще сказал, что это необходимое условие для написания хороших программ на Java. 
Прямо никто не говорит. Я вообще так, разговор поддержать. 
PM MAIL WWW   Вверх
serghd
Дата 4.2.2010, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 5.10.2009

Репутация: нет
Всего: нет



Цитата(LSD @ 2.2.2010,  16:29)
Цитата(serghd @  2.2.2010,  16:22 Найти цитируемый пост)
Может будет срабатывать присвоение ему null или что можно ещё тут предпринять.

Это обязательное условие чтобы GC смог его убрать.

то есть gc его уберёт сразу же или "когда придёт время"?

Это сообщение отредактировал(а) serghd - 4.2.2010, 18:15
PM MAIL   Вверх
LSD
Дата 4.2.2010, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(serghd @  4.2.2010,  17:23 Найти цитируемый пост)
то есть gc его уберёт сразу же или "когда придёт время"? 

Когда понадобится еще память. Собственно не вижу причин до этого момента беспокоиться о том, что он занимает память.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Дрон
Дата 4.2.2010, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 93



Цитата(LSD @  4.2.2010,  17:40 Найти цитируемый пост)
Собственно не вижу причин до этого момента беспокоиться о том, что он занимает память. 

Рассказать? smile
Хотя я уже рассказывал.

Имеем комп с 512 Мб физической памяти и java-программу, запущенную с -Xmx1024m.
Так много необходимо потому, что один раз из ста может действительно понадобиться одновременно взять много памяти, но большую часть времени софтина прекрасно обходилась бы и сотней мегабайт. Да вот только как это сборщику мусора объяснить -- он иногда нормально память чистит, а иногда ждёт пока наберётся побольше.

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

Ещё пытался крупные объекты запихивать в WeakReference, но и тут сборщик мусора устраивал подлянку, вычищая их при любом удобном случае, несмотря на то, что они были ещё нужны. Там есть какая-то возможность указать очередь, но я опять же не стал в ней разбираться.


Это сообщение отредактировал(а) Дрон - 4.2.2010, 17:52


--------------------
Да. Именно так.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0754 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.