Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > GARBAGE_COLLECTOR и оптимизация ресурсов памяти..


Автор: polosatij 25.11.2004, 12:51
доброе утро =)

народ, встретился недавно вот с такой проблемой:

мой "аппликатион" стал немного подтормаживать и даже в некоротых (неопределённых местах) подвисать..

при этом выделилось следующее: если с "аппликатион" работать медленно.. то есть.. нажать кнопку -> действие -> немного подождать (сек. 5- ... ).. нажать - подождать -> ТО ВСЁ РАБОТАЕТ ЗАМЕЧАТЕЛьНО smile

я думаю это связано как-то с памятью и GARBAGE_COLLECTOR, который не успевает очищать старые ресурсы..

можно ли натравить GARBAGE_COLLECTOR на какие-либо ресурсы? например, пользовался ЭТОЙ переменной, классом -> он мне больше не нужен, очистька его сразу..

и ещё на это тему:

Код

 p1 = new Point(...);
 // ... действия ...
 p1 = new Point(...);


p1 будет переписана? или для неё выделяються специальные ресурсы smile

если выделяются -> можно ли как-то решить происходящую из за этого проблему с памятью?

заранее паси smile

Автор: AntonSaburov 25.11.2004, 13:53
Для p1 будет выделен скорее всего новый кусок памяти.

Ведь вызов GC - дело дорогое и частые вызовы делать не выгодно. Вполне может быт, что тормоза идут из-за того, что памяти мало и GC начинает пытаться освобождать "вторую генерацию" (т.е. те объекты, которые уже раз "пережили" CG) А это действительно процедура более долгая.

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

Автор: polosatij 25.11.2004, 14:16
Цитата(AntonSaburov @ 25.11.2004, 13:53)
Для p1 будет выделен скорее всего новый кусок памяти.


можно ли переписать старый?


Цитата(AntonSaburov @ 25.11.2004, 13:53)
А это действительно процедура более долгая.


могу ли я его натравить сразу на те ресурсы что не нужны мне? и ведь знаю какие ресурсы мне больше не нужны smile

Цитата(AntonSaburov @ 25.11.2004, 13:53)
Попробуй поиграть с настройками JVM


ты не подскажешь: где мне их найти smile

хотя с другой стороны, мой "аппликатион" не для меня, а для другий пользователей.. и поэтому мне нужно всё сделать для стандартных настроек..

Автор: Sardar 25.11.2004, 14:43
Цитата(polosatij @ 25.11.2004, 13:16)
можно ли переписать старый?

Сделай метод setЧтоНибудь(), который переустановит все необходимые поля, как будто обьект создан снова.

Автор: polosatij 25.11.2004, 15:00
Цитата(Sardar @ 25.11.2004, 14:43)
Сделай метод setЧтоНибудь(), который переустановит все необходимые поля, как будто обьект создан снова.


да.. но ресурс старого то остаётся в памяти, а это и есть моя проблема smile
понимаешь? smile

setЧтоНибудь () - это тоже самое что и


Цитата(polosatij @ 25.11.2004, 12:51)
p1 = new Point(...);
  // ... действия ...
  p1 = new Point(...);


Автор: AntonSaburov 25.11.2004, 16:00
Цитата(polosatij @ 25.11.2004, 15:16)
можно ли переписать старый?

Это уже от тебя не зависит. Тут как JVM решит, так и будет.

Цитата(polosatij @ 25.11.2004, 15:16)
могу ли я его натравить сразу на те ресурсы что не нужны мне?

Нет, на конкретный мусор натравить нельзя. Можно только на все сразу smile

Цитата(polosatij @ 25.11.2004, 15:16)
ты не подскажешь: где мне их найти

Например тут можно посмотреть http://java.sun.com/docs/hotspot/gc1.4.2/

Автор: polosatij 25.11.2004, 16:13
Цитата(AntonSaburov @ 25.11.2004, 13:53)
Ведь вызов GC - дело дорогое и частые вызовы делать не выгодно.



почему smile
или точнее - из за чего smile

Автор: AntonSaburov 25.11.2004, 16:16
Цитата(polosatij @ 25.11.2004, 17:13)
почему

А как раз по ссылочке, которую я дал можно это узнать. Вообще освобождение памяти - дело дорогое. Помню были соревнования понаписанию самого быстрого allocate(). Там же не просто указатель сунул в зубы. Там же ведется список свободных и занятых областей. А когда освобождаешь память удаля.тся записи из внутренних таблиц, в которых это все храниться. Кроме того надо пробежать по всем ссылкам и проверить их доступность. А это долгий процесс. Сравнительно.

Автор: Domestic Cat 25.11.2004, 16:25

Здесь есть - самый нижний пост и дальше.

http://forum.vingrad.ru/index.php?showtopic=24799&st=90

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)