![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
isabsent |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 30.5.2010 Репутация: нет Всего: нет |
Запускаю два раза подряд приложение с разными параметрами. Первый раз потребляется очень много памяти - порядка 1 ГБ - так и должно быть, задача на большой перебор. Как видно на картинке
![]() Теперь запускаю в коротком цикле эти же две операции - третий большой широкий зуб. Видно, что памяти потребляется больше чем в первом и счет продолжается дольше, чем если считать отдельные задачи. Вопрос - почему так нерационально используется память и что сделать, чтобы уйти от такого поведения? Задача тяжёлая для счета - приходится оптимизировать. P.S. Все ненужные листы и ссылки на них при завершении каждой операции в цикле сначала почистил, потом объявил как null. Пробовал вызывать gc после первой опреации в цикле - стало только хуже. |
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
еще убрать все static Добавлено через 2 минуты и 24 секунды неправильно сказал... убрать ты их не сможешь, просто их не должно быть изначально |
|||
|
||||
isabsent |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 30.5.2010 Репутация: нет Всего: нет |
Я сам static'ом ничего не объявлял пока. Каким профайлером можно посмотреть что происходит с ненужными объектами, какие ссылки их удерживают от уничтожения когда я принудительно запускаю gc? В VisualVM я такой опции не нашёл...
Это сообщение отредактировал(а) isabsent - 13.4.2012, 23:38 |
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
упс!!!
без VisualVM можешь загрузить прогу и посмотреть? |
|||
|
||||
isabsent |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 30.5.2010 Репутация: нет Всего: нет |
Экспериментальным путём выяснил, что если проявить настойчивость
![]()
|
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
наверное твоя VisualVM в хеше хранит всю прогу, даже выключенную.
|
|||
|
||||
isabsent |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 30.5.2010 Репутация: нет Всего: нет |
Нет, VisualVM я не запускал. Это я раньше пытался ею понять где те ссылки, которые не дают уничтожить объекты ненужные.
|
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
т.е. ты запустил прогу без IDE, и все равно память утекает? (как запускал?)
ну все равно, посмотри в диспетчер задач (если винда у тебя). может быть цикл бесконечный запущен, или таймер с режимом меньше ну 500 например... наверняка у тебя есть стандартная JVM. попробуй под ней скомпилировать и запустить эту прогу. |
|||
|
||||
isabsent |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 30.5.2010 Репутация: нет Всего: нет |
Нет, я ее запускал под IDE, но не под профайлером.
|
|||
|
||||
isabsent |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 30.5.2010 Репутация: нет Всего: нет |
Если оставить один вызов gc после каждой операции в цикле (сделал одну "тяжёлую" по потреблению памяти операцию и 5 следующих за ней "лёгких" в цикле).
Так выглядит потребление памяти без IDE ![]() А вот так под IDE ![]() Очевидно, что под IDE однкратный вызов gc не очищает ненужные объекты так же "хорошо" как если запускать jar-файл без IDE. Это сообщение отредактировал(а) isabsent - 14.4.2012, 10:33 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |