Исключение OutofMemory при использовании потоковой базы данных Java 8 из JPA в Grpc - PullRequest
0 голосов
/ 21 октября 2019

Цель моей функции - загрузить все данные из таблицы базы данных и отправить их один за другим клиенту через Grpc. Таблица базы данных огромна, и я не могу загрузить ее в память. Поэтому я думаю об использовании потока.

@Transactional
@Override
public void getAllData(DataRequest tradeDataRequest, StreamObserver<DataResponse> responseObserver) {
    DataResponse.Builder builder = DataResponse.newBuilder();
    try(Stream<Entity> entities =  databaseRepository.getAll()) {
        entities.map(DataResponse.Builder::build)
                .forEach(dataResponse -> {
                    responseObserver.onNext(dataResponse);
                });
    } 
}

Тем не менее, я получил исключение Heap вне памяти. Я не совсем понимаю, почему возникла исключительная причина потоковой передачи, если я не использую .collect(Collectors.toList()).

Может кто-нибудь помочь мне понять это?

...