Вы можете использовать Statement.setFetchSize () , чтобы контролировать количество записей, извлекаемых в память при выполнении итерации по набору результатов. Но в целом я думаю, что это зависит от драйвера JDBC от того, как он обрабатывает этот параметр и как он сохраняет извлеченные записи в памяти.
РЕДАКТИРОВАНИЕ: Вот пример (теоретически набор результатов будет хранить только 1 запись в памяти):
Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.FETCH_FORWARD);
stmt.setFetchSize(1);
ResultSet srs = stmt.executeQuery("SELECT COF_NAME, PRICE FROM COFFEES");
while (srs.next()) {
String name = srs.getString("COF_NAME");
float price = srs.getFloat("PRICE");
// Do your processing...
}