powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как освободить ресурсы
27 сообщений из 27, показаны все 2 страниц
Как освободить ресурсы
    #39560879
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Консольная программа, когда только загрузилась занимет 10 Мб памяти (процесс javaw).
Далее программа проходит первый круг цикла, выполнив все что нужно, и засыпает. После "пробуждения" процесс повторяется. Проблема в том, что память не освобождается, несмотря на закрытие ресурсов. На момент засыпания она уже занимает более 50 Мб в памяти и похоже сбрасывать это значение не собирается.
Каие методы есть, чтобы освободить память? Такое впечатление, что все что программа наработала до точки засыпания она держит в памяти, что совсем не обязательно.
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39560882
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-Xmx можно поменьше задать. VisualVM запустите и посмотрите может ли gc что-то собрать. Если не может - сделайте дамп кучи. Если дело не в потреблении, то можно выбрать gc попроще и настройками заставить собирать почаще.
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39560920
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,
Проверьте ещё раз что все переменные освобождаете перед засыпанием.
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39560925
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,
Непонятно, почему у вас акцент на засыпание?
Делаете тест из 1000 циклов.
Память не должна расти.
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39560976
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174Консольная программа, когда только загрузилась занимет 10 Мб памяти (процесс javaw).
Далее программа проходит первый круг цикла, выполнив все что нужно, и засыпает. После "пробуждения" процесс повторяется. Проблема в том, что память не освобождается, несмотря на закрытие ресурсов. На момент засыпания она уже занимает более 50 Мб в памяти и похоже сбрасывать это значение не собирается.Глупо смотреть на размер (какой из трёх) памяти и делать далеко идущие выводы - (системное) управление памятью сложнее, чем кажется.

P.S. Кроме рекомендации "Xms == Xmx" могу напомнить, что JVM "неохотно" возвращает память системе. Да и незачем это.

P.P.S. Ну и разновсяческое от Русиновича ( RAMMap / VMMap ). Только какую проблему решаем-то?
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39561119
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123rema174,
Непонятно, почему у вас акцент на засыпание?
речь о том что засыпает не на секунду, а на продолжительное время
и gc мог бы сделать что надо за это время
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39561120
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174речь о том что засыпает не на секунду, а на продолжительное время
и gc мог бы сделать что надо за это время
А мог бы и не сделать. Как вы определили что GC ничего не делал? Java под виндой уже научилась возвращать память? Графики GC будем смотреть?
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39561149
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,
Там не так всё просто, иначе все бы тестировали засыпанием. Но ведь тестируют циклы циклами))).
И 50 мегов это ничто. Пустяк.
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39561186
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174Проблема в том, что память не освобождается, несмотря на закрытие ресурсов. На момент засыпания она уже занимает более 50 Мб в памяти и похоже сбрасывать это значение не собирается.В чем "проблема" и зачем VM освобождать память? 50 Мб - это заведомо меньше разрешенного по умолчанию размера кучи JVM, поэтому она ее смело использует по своему усмотрению.
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39561608
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зашедший,
возможно, так есть, учитывая что стандартный InitialHeapSize: 60Mb
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39561691
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174Консольная программаrema174( процесс javaw )это не консольное приложение
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39561728
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman,

та какая разница! консольное приложение, где выполняется?! :))
- в jvm!
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612441
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rema174Консольная программа, когда только загрузилась занимет 10 Мб памяти (процесс javaw).
Далее программа проходит первый круг цикла, выполнив все что нужно, и засыпает. После "пробуждения" процесс повторяется. Проблема в том, что память не освобождается, несмотря на закрытие ресурсов. На момент засыпания она уже занимает более 50 Мб в памяти и похоже сбрасывать это значение не собирается.
Каие методы есть, чтобы освободить память? Такое впечатление, что все что программа наработала до точки засыпания она держит в памяти, что совсем не обязательно.

в код добавлено использование нескольких классов из свинга и теперь " на момент засыпания " процесс javaw занимает 75 Мб — т.е. явно держит в памяти загруженные классы.
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612458
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174в код добавлено использование нескольких классов из свинга и теперь " на момент засыпания " процесс javaw занимает 75 Мб — т.е. явно держит в памяти загруженные классы.
проблема в чём? Кто сказал что на засыпание должно быть не так?
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612466
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

может так и должно быть... схема примерно такая

while(true){

new Class_A().doWork(); //сделай работу и исчезни
new Class_B().doWork(); //сделай работу и исчезни
new Class_C().doWork(); //сделай работу и исчезни
...
// чем больше создается разных объектов, тем больше разных классов загружаются в память, так?

// теперь идем спать... а JVM тем временем поразгребает мусор, так?

}

короче говоря, чем больше напихано в цикл, тем больше жрет памяти, хотя объекты в цикле НЕ переиспользуются, - это нормально?
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612522
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174короче говоря, чем больше напихано в цикл, тем больше жрет памяти, хотя объекты в цикле НЕ переиспользуются, - это нормально?
1. Убери слово засыпает и реши более простую задачу без этого слова.
2. Что сделал по первому же ответу в твоей теме? Ведь ты повторил всё слово в слово из начала темы.
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612537
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Что сделал по первому же ответу в твоей теме?
запуск с -Xmx32m практически дает очень мало, а экспериментировать экзотикой пока не охота

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

Petro123Убери слово засыпает и реши более простую задачу без этого слова
что плохого, что процесс засыпает? а задача и так простая
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612539
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174 // чем больше создается разных объектов, тем больше разных классов загружаются в память, так?

Нет, не так. Чем больше классов тем больше классов. Чем больше объектов, тем больше объектов. Но без пересечений этих двух.
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612540
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174что плохого, что процесс засыпает? а задача и так простая
А терминах операционной системы есть понятие процесс, но нет понятия спящего процесса. Вы опять изобретаете свою терминологию?
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612543
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174гораздо интересней понять почему так происходит, а, возможно, так и должно быть
возьмите visualvm (jdk/bin/jvisualvm.exe) снимите дамп кучи. Посмотрите на сколько соклатился её объем (перед дампом запускается Full GC). Потом загляните в кучу на предмет того есть ли там лишние объеты или нет
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612553
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczrema174 // чем больше создается разных объектов, тем больше разных классов загружаются в память, так?

Нет, не так. Чем больше классов тем больше классов. Чем больше объектов, тем больше объектов. Но без пересечений этих двух.

мне кажется мы говорим об одном и тоже, ведь объекты создаются на основании классов,
т.е. не без классов; т.о. пересечение тут есть в том смысле, что одно с другим связано
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612566
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174мне кажется мы говорим об одном и тоже, ведь объекты создаются на основании классов,
т.е. не без классов; т.о. пересечение тут есть в том смысле, что одно с другим связано
Возможно, но пока вы изъясняетесть витееватыми и не четкими терминами и делаете такие же выводы, этого сразу не ясно.
Классы можно загружать в память и без объектов, например.
Количество итераций цикла, который вы привели к количеству загруженых классов тоже отношения не имеет.
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612588
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczвозьмите visualvm (jdk/bin/jvisualvm.exe) снимите дамп кучи.
HeapDump на моем приложении ?


Blazkowiczперед дампом запускается Full GC
имеется ввиду запустить PerformGC ?


BlazkowiczПосмотрите на сколько сократился её объем
Имеется ввиду сравнить значения size из закладки Heap в окне Monitor ?


BlazkowiczПотом загляните в кучу на предмет того есть ли там лишние объеты или нет
как понять какие из них лишние? смотреть на дампе в классах на инстансы? что там можно понять?







возьмите visualvm (jdk/bin/jvisualvm.exe) снимите дамп кучи. Посмотрите на сколько соклатился её объем (перед дампом запускается Full GC). Потом загляните в кучу на предмет того есть ли там лишние объеты или нет
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612592
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174а экспериментировать экзотикой пока не охота
а запустить тесть на пол суток в цикле и следить за памятью не судьба?
Ведь это простейший юз-кейс по памяти.
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612692
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну что, ребяты... вызовами к памяти, доступной через рантайм, выяснилось, что приложение использует около 7Mb, что уже похоже на правду, и это с xmx10Mb, но виндовый процесс на восьмой джаве все-равно великоват, и какая там связь скорее всего знает только узкий круг людей, а jvisulvm пока не осилил, некому научить...
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39612715
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,
зато ты подтвердил народную мудрость на собственной шкуре:
«Работает — не трогай»
...
Рейтинг: 0 / 0
Как освободить ресурсы
    #39613379
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и еще оказалось, что джава выделяет память с запасом -
при запуске без аргументов -VM обнаружил, что память расходованная в начале выполнения равнялась памяти выполнение на какой-то точке в середине программы, а при малом xmx такая разница была, т.е после профилирования всегда можно определить оптимальные значения xmx, хотя пожалуй это не всегда возможно, особенно в случает каких-то сложных систем
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Как освободить ресурсы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]