ResultSet - это итератор, данные из него не удаляются, их в нём вообще нет. Грубо говоря, вызов next сдвигает курсор базы, который возвращает новую строку выборки. Обходной путь - сохранять результаты в список, если есть уверенность, что запрос не вернул больше данных, чем влезет в память.