Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > борьба с OutOfMemoryError


Автор: goodday1941 6.12.2007, 21:56
в общем проблема такая, при вытаскивании большего колличества информации на сервере с базы вываливается  OutOfMemoryError...

я вижу только один вариант: limit ofset при построении запросов.. то-есть вытягиваем информацию с сервера на клиент по частям....

есть ли более изящный вариант?

Автор: ivg 6.12.2007, 22:05
Сразу же отдавать в респонс, не создавая дополнительных сущностей
А вообще да, ограничивать. Если на клиенте пользователь, то 99,9% что ему весь набор записей не нужен.

Автор: goodday1941 6.12.2007, 22:55
нет... нужен... к примеру клиент хочет экспортировать базу телефонов в эксель smile 


Цитата(ivg @  6.12.2007,  22:05 Найти цитируемый пост)
Сразу же отдавать в респонс

ну тут без дополнительных сущностей никак

Автор: w1nd 7.12.2007, 02:02
Страницами.

Автор: nornad 7.12.2007, 02:16
Цитата(goodday1941 @  7.12.2007,  01:55 Найти цитируемый пост)
нет... нужен... к примеру клиент хочет экспортировать базу телефонов в эксель

Клиенту нужен конечный результат (данные в экселе), а не промежуточный (данные из базы). Если данных много, то смотреть их все никакой клиент (даже самый двинутый) не будет. Глянет мельком туда-сюда и все дела. Ну, ещё итог глянет.
А раз так, то всё должно работать "за кадром" - грузим частями и пихаем куда надо.
Если же клиенту ну очень надо именно в нашем приложении смотреть все данные (был у меня такой случай - "дайте мне все данные! ну и что, что их много (миллионы записей точно)"), то надо делать страничный просмотр этих самых данных. Иначе клиент может просто уснуть (если не помереть от скуки), пока данные будут грузиться из базы (особенно интересен момент, когда к базе цепляешься через инет, который тянется диалапом на 19900 бод  smile ).

Автор: Maksym 7.12.2007, 13:28
goodday1941
А сколько памяти отведено контейнеру?

Автор: COVD 7.12.2007, 16:50
Сохраните данные из базы в csv файл и дайте ссылку клиенту. Потом файл удалите. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)