![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
Ребята у меня вот такая вот проблема
Есть программа, которая раз в минуту скачивает 30 страничек паралельно, потом она парсит и создаёт где-то 30 объектов этих страниц. При помощи hibernate в H2 сохраняются эти объекты. Как я уже сказал выше, весь это цикл выполняется каждую минуту. В Netbeans есть Profiler, я залез посмотреть, что же всё таки происходит и вот увидел вот такую вот картинку. ![]() Как видно из картинки, больше всего памяти забирает char[], и показатель увеличивается с каждым повтором(каждую минуту). Я так понимаю, что char[] увеличивается каждый раз когда скачивается страница из интернета. Вот мой код для скачивания страницы.
Может где-то здесь память утекает? Вот и вопрос почему же память не очищается? -------------------- www.unkis.com |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
А что ты дальше с page_autoList делаешь?
-------------------- Lost.... |
|||
|
||||
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
Создаётся объект и при вызове конструктора вызывается метод getAutoListPage.
А этом классе находятся методы которые работают с page Вот код, методы убрал так как слишком длинные они
Добавлено через 3 минуты и 8 секунд тоесть получается, что где-то висит ссылка на это класс? -------------------- www.unkis.com |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Вот этим методом ты получаешь StringBuffer. И дальше где-то он висит... -------------------- Lost.... |
|||
|
||||
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
Я это делаю в конструкторе
this.page = getAutoListPage(queriID); тоесть получается, что где-то висит ссылка на это класс? -------------------- www.unkis.com |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
unkis, из всего что ты привел все равно не понятно что ты делаешь с этими страницами. Ты их сохраняешь в базу как есть? В сохраняемых в базу объектах есть атибут с типом char[]? Если так, то как у тебя настроено кэширование второго уровня в Hibernate? Вполне возможно что эти объекты хранятся именно в кэше.
|
|||
|
||||
| Shurr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 24.10.2006 Репутация: 5 Всего: 7 |
unkis
Нарастание потребления памяти приводит к OutOfMemory, или просто интересно почему так? Если при длительной работе OutOfMemory не выпадает - возможно просто за наблюдаемый промежуток времени не вызывался сборщик мусора, т.к. памяти пока хватает. |
|||
|
||||
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
Пока OutOfMemory небыло, понятно, будум наблюдать.
Вопрос сколько по defaultu памяти выделяется под java? -------------------- www.unkis.com |
|||
|
||||
| Shurr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 24.10.2006 Репутация: 5 Всего: 7 |
||||
|
||||
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
Вот дождался выкинула OutOfMamory.
А как можно сказать hibernate чтобы он очищал свой кэш? Может мне посмотреть в сторону Reference, там как-то было Soft reference и так далее? Добавлено через 1 минуту и 13 секунд и при помощи чего можно посмотреть, какие объекты остаются в памяти? -------------------- www.unkis.com |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
По умолчанию кэш второго просто выключен. Если у тебя в конфигурации Hibernate есть что-то типа
и тэги <cache>, то надо видимо их убирать. Прежде конечно надо разобраться где именно утечка. |
|||
|
||||
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
Вот меня всегда интересовало, как именно разбираться, какими средствами?
И как насчёт того чтобы может использовать Reference, там как-то было Soft reference и так далее? -------------------- www.unkis.com |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |