Re: Переполнение памяти при работе с ResultSet
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 01.08.05 11:08
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Привет всем !!!!!


А>Имеется следующий код программы, которая делает выборку информации из таблицы, содержащей несколько миллионов записей


А>При чтении в цикле записей (примерно несколько сот тысяч записей) задача "вылетает" с сообщением об ошибке

А>о нехватке памяти для приложения. Из этой ситуации удается выйти, если увеличить объем выделяемой памяти под приложение (параметр командной строки -Xmx256m). Однако, это не спасает ситуацию в принципе.
А>Получается, что все прочитанные записи ResultSet хранит у себя в памяти. Эта ошибка происходит со всеми серверами СУБД, используемые в проекте (MSSQL, Informix, DBF). (использование хранимой процедуры в данной ситуации не приемлемо).

А>Помогите разрешить эту проблемму !!!!!!!!!!!!!




попробуй поиграть с setFetchSize у Connection или Statement. может помочь. Вот только щас нашел, что если установить fetchSize в Integer.MIN_VALUE и использовать флаги java.sql.ResultSet.TYPE_FORWARD_ONLY и java.sql.ResultSet.CONCUR_READ_ONLY, то mySQL создает streaming ResultSet, то есть не выбирает все записи из базы, а читает их по мере скроллирования курсора.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.