Я реализую потоковую передачу отдыха, и пока все работает нормально, но я вижу одну проблему с моей реализацией при отправке большого количества тяжелого файла. Например, когда я отправляю 10 файлов по 100 МБ, в памяти остается 1 ГБ. Итак, мой вопрос: как реализовать это в современной Java или с помощью итератора?
Я получаю ObjectJson
как InputStream
, и у меня есть метод, когда я читаю значения JSON
и получаю List
объекта моего домена:
List<DomainObject> jsonStreamToDomainObject(final InputStream stream) throws IOException {
return objectMapper.readValue(stream, new TypeReference<List<DomainObject>>() {
});
}
Поэтому я думаю, что метод должен выглядеть так, как показано ниже. Но я думаю, что это должно быть лучшее решение, чем iterator
, а также я не знаю, как преобразовать Input stream
в Iterator
:
Iterator<DomainObject> jsonStreamToDomainObject(final InputStream stream) throws IOException {
return someMagicWithInputStream(stream);