| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > GARBAGE_COLLECTOR и оптимизация ресурсов памяти.. |
| Автор: polosatij 25.11.2004, 12:51 | ||
| доброе утро =) народ, встретился недавно вот с такой проблемой: мой "аппликатион" стал немного подтормаживать и даже в некоротых (неопределённых местах) подвисать.. при этом выделилось следующее: если с "аппликатион" работать медленно.. то есть.. нажать кнопку -> действие -> немного подождать (сек. 5- ... ).. нажать - подождать -> ТО ВСЁ РАБОТАЕТ ЗАМЕЧАТЕЛьНО я думаю это связано как-то с памятью и GARBAGE_COLLECTOR, который не успевает очищать старые ресурсы.. можно ли натравить GARBAGE_COLLECTOR на какие-либо ресурсы? например, пользовался ЭТОЙ переменной, классом -> он мне больше не нужен, очистька его сразу.. и ещё на это тему:
p1 будет переписана? или для неё выделяються специальные ресурсы если выделяются -> можно ли как-то решить происходящую из за этого проблему с памятью? заранее паси |
| Автор: AntonSaburov 25.11.2004, 13:53 |
| Для p1 будет выделен скорее всего новый кусок памяти. Ведь вызов GC - дело дорогое и частые вызовы делать не выгодно. Вполне может быт, что тормоза идут из-за того, что памяти мало и GC начинает пытаться освобождать "вторую генерацию" (т.е. те объекты, которые уже раз "пережили" CG) А это действительно процедура более долгая. Советовать что-либо сложно. Попробуй поиграть с настройками JVM - увеличить память, уменьшить пероди вызова GC. Внутри может попробовать что-то поубирать. |
| Автор: polosatij 25.11.2004, 14:16 | ||||||
можно ли переписать старый?
могу ли я его натравить сразу на те ресурсы что не нужны мне? и ведь знаю какие ресурсы мне больше не нужны
ты не подскажешь: где мне их найти хотя с другой стороны, мой "аппликатион" не для меня, а для другий пользователей.. и поэтому мне нужно всё сделать для стандартных настроек.. |
| Автор: Sardar 25.11.2004, 14:43 | ||
Сделай метод setЧтоНибудь(), который переустановит все необходимые поля, как будто обьект создан снова. |
| Автор: polosatij 25.11.2004, 15:00 | ||||
да.. но ресурс старого то остаётся в памяти, а это и есть моя проблема понимаешь? setЧтоНибудь () - это тоже самое что и
|
| Автор: AntonSaburov 25.11.2004, 16:00 | ||||||
Это уже от тебя не зависит. Тут как JVM решит, так и будет.
Нет, на конкретный мусор натравить нельзя. Можно только на все сразу
Например тут можно посмотреть http://java.sun.com/docs/hotspot/gc1.4.2/ |
| Автор: polosatij 25.11.2004, 16:13 | ||
почему или точнее - из за чего |
| Автор: AntonSaburov 25.11.2004, 16:16 | ||
А как раз по ссылочке, которую я дал можно это узнать. Вообще освобождение памяти - дело дорогое. Помню были соревнования понаписанию самого быстрого allocate(). Там же не просто указатель сунул в зубы. Там же ведется список свободных и занятых областей. А когда освобождаешь память удаля.тся записи из внутренних таблиц, в которых это все храниться. Кроме того надо пробежать по всем ссылкам и проверить их доступность. А это долгий процесс. Сравнительно. |
| Автор: Domestic Cat 25.11.2004, 16:25 |
| Здесь есть - самый нижний пост и дальше. http://forum.vingrad.ru/index.php?showtopic=24799&st=90 |