| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Непонятная "утечка" памяти |
| Автор: hydrargyrum 7.7.2009, 18:24 | ||||||
| Всем привет! В довольно обширном куске обнаружилась непонятная "утечка" памяти. Вот значимый кусок кода:
этот кусок вложен в другой цикл. Узкое место такое:
Память зажирается выше всяких расчетов. Вот выдержка из лога: 70 created: total = 42616Kb, free = 16134Kb, used = 26482Kb 545 to load left 80 created: total = 42616Kb, free = 14608Kb, used = 28008Kb 535 to load left 90 created: total = 42616Kb, free = 15578Kb, used = 27038Kb 99 created. Before close: total = 43638784, free = 14683088, used = 28955696 99 created. After close: total = 43638784, free = 14683088, used = 28955696 525 to load left 100 created: total = 44220Kb, free = 16010Kb, used = 28210Kb ... 400 created: total = 65088Kb, free = 4343Kb, used = 60745Kb 215 to load left 410 created: total = 65088Kb, free = 448Kb, used = 64640Kb 205 to load left 420 created: total = 65088Kb, free = 448Kb, used = 64640Kb 195 to load left 430 created: total = 65088Kb, free = 448Kb, used = 64640Kb Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.nio.CharBuffer.wrap(Unknown Source) at java.nio.CharBuffer.wrap(Unknown Source) Если этот кусок заменить на:
то все нормально: 70 created: total = 25832Kb, free = 7594Kb, used = 18238Kb 545 to load left 80 created: total = 25832Kb, free = 7103Kb, used = 18729Kb 535 to load left 90 created: total = 25832Kb, free = 8321Kb, used = 17511Kb 99 created. Before close: total = 26451968, free = 8447184, used = 18004784 99 created. After close: total = 26451968, free = 8447184, used = 18004784 525 to load left 100 created: total = 25832Kb, free = 8757Kb, used = 17075Kb ... 25 to load left 600 created: total = 25832Kb, free = 4460Kb, used = 21372Kb 15 to load left 610 created: total = 25832Kb, free = 2965Kb, used = 22867Kb 5 to load left 620 created: total = 25832Kb, free = 4150Kb, used = 21682Kb 624 created. Before close: total = 26451968, free = 3605240, used = 22846728 624 created. After close: total = 26451968, free = 3605240, used = 22846728 Loaded in 49375 msecs СУБД – PostreSQL 8.3.4 Подскажите, где тут собака порылась? |
| Автор: hydrargyrum 7.7.2009, 19:26 | ||||||
тут вот какое дело:
такой код тоже не вызывает описанной проблемы Конструктор DateTime такой:
ResultSet чистится после каждого цикла работы с ним. Там так: в большом цикле делается запрос к БД на выборку ~ 65 000 строк, потом они све разбираются в малом цикле, а потом
Этот кусок за все время работы вызывается 6 раз и не дает никаких результатов в осввобождении памяти |