![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Mirkes |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 7 Всего: 17 |
День добрый!
В очередной раз столкнулся с переполнением памяти. В цикле выполняется вызов нескольких методов, которые потребляют память довольно сильно, но по выходе из метода ничего не остается (метод проводит запись в файл и освобождает память). Решил поискать причину. Поставил вывод состояния памяти (freeMemory()) перед вызовом каждого метода. Для чистоты решил вызвать очистку памяти (garbage collectior) перед циклом.
Что делает каждый метод пока не важно. Вот результат
Тогда я решил усилить очистку памяти и заменил в первой строке 1 на 10
Вот результат
У меня возникло подозрение, что gc() просто стартует, а управление немедленно возвращается вызвавшему методу. Это действительно так? -------------------- Mirkes |
||||||||
|
|||||||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Вместо
лучше использовать флаги -XX:+PrintGCDateStamps -XX:+PrintGCDetails. Для того чтобы посмотреть, какие объекты занимают память, надо использовать профилировщики, например Java VisualVM (идет в комплекте с JDK). Добавлено через 3 минуты и 42 секунды
Это сложный вопрос, так просто на него не ответишь. Вобще говоря, вызов gc() может вообще ничего не делать о чем прямо говориться в документации, но пока все таки он инициирует сборку мусора. Если дергать его часто и памяти достаточно, то с большой долей вероятности будет собираться лишь young generation и это бует просисходить быстро. -------------------- 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. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "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. |