ORMLite с BigData — java.lang.Ошибка OutOfMemoryError

#java #mysql #ormlite

#java #mysql #ormlite

Вопрос:

Если я запрашиваю большую таблицу, я получаю java.lang.Ошибка OutOfMemoryError. Профилировщик говорит, что com.mysql.jdbc.Buffer становится большим.

Можно ли установить fetchsize в ormlite? Я уже использую итератор, поэтому он должен потреблять меньше памяти, чем findall . Я также пробовал разные типы результирующего набора в качестве параметра итератора.

Установка большего размера кучи или использование limit / offset в запросе не должны быть решением.

Ответ №1:

Можно ли установить fetchsize в ormlite? Я уже использую итератор, поэтому он должен потреблять меньше памяти, чем findall . Я также пробовал разные типы результирующего набора в качестве параметра итератора.

Я не думаю, что это проблема с размером выборки. Значение по умолчанию не должно вызывать проблем с памятью. Если вы используете итератор, то у вас все должно быть хорошо. Вы храните все объекты в памяти или что-то в этом роде? Можете ли вы обрабатывать их по мере их чтения вместо того, чтобы хранить их все в памяти?

Комментарии:

1. Java.lang. Ошибка OutOfMemoryError возникает непосредственно после вызова iterator() dao. Потребление памяти лежит за пределами моего кода. Я изменил максимальный размер кучи, и все в порядке. Тем не менее, это не должно быть решением.

2. sry, не после того, как итератор() -> внутри …callstack заканчивается где-то в коде, связанном с mysql.