Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> java.lang.OutOfMemoryError: где утечка? обработка данных из MySQL + Hibernate 
:(
    Опции темы
Andrey1
Дата 7.7.2008, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: 2
Всего: 5



Столкнулся с проблемой, что при обработки данных из базы MySQL через Hibernate(JPA) возникает утечка памяти. Но совсем не ясно где (не ясно даже через какие объекты может быть утечка). 
Структура проги такова:

Код


    public static void main(String[] args)
    {

        // ... инициализация DAO классов...

        List<Person> persons = personDao.getData(...);

       // основной цикл: 
        for (
                Person person 
                : persons)
        {

       // ... используются только новые объекты, много new, есть циклы...

        ResultEntityObject result = new ResultEntityObject();
        ResultObjectDao.save(result);
        }
}


Прога постоянно отъедает память и в итоге вылетает с эксепшином: java.lang.OutOfMemoryError.

Может Hibernate сжирает память? Можно ли ему сказать, чтобы этого не делал? smile


Это сообщение отредактировал(а) Andrey1 - 7.7.2008, 13:13


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
onsh76
Дата 7.7.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 20.11.2005
Где: Beautiful BC

Репутация: 4
Всего: 5



Причин может быть много... Прогони свою программу добавив вот такую опцию в команду java:
Код

-verbose:gc -XX:+PrintGCDetails

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

Код

-Xmx512m and -Xmx1024m
-XX:MaxPermSize=256m


прими к сведению: по дефолту jvm выставляет мах перм сайз на 64 метра...
Удачи!  smile 
PM MAIL   Вверх
powerOn
Дата 7.7.2008, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 28
Всего: 159



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


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Andrey1
Дата 7.7.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: 2
Всего: 5



Запускаю с опцией:
Цитата(onsh76 @  7.7.2008,  11:01 Найти цитируемый пост)
-Xms400m -Xmx1000m

Этого не хватает...

Добавлено через 2 минуты и 27 секунд
Цитата(powerOn @  7.7.2008,  11:02 Найти цитируемый пост)
Как вариант - у тебя нехватка памяти вызвана не утечкой, а просто её недостатком для выполнения задачи.

Не похоже:
1) Нет запросов, которые бы стОлько данных потребовали;
2) Память отжирается постепенно и постоянно.

Добавлено через 9 минут и 47 секунд
Цитата(powerOn @  7.7.2008,  11:02 Найти цитируемый пост)
Как другой вариант - где-то ссылки висят, но тут нужно подробно анализировать код.

Где они могут висеть?... Висят только DAO классы и EntityManager"ы...

Попробовал запустить Profiler - так и не понял как посмотреть, в каком месте утечка (показывает только, что память отжирается на byte[] и char[]).


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0714 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.