No momento usando spring todos os dados são recuperados e o Stream é aplicado apenas aos dados já na memória.
Se você olhar para a fonte de
org.springframework.data.jpa.provider.PersistenceProvider
parece que ele usa um ScrollableResults
para transmitir os dados. Geralmente um
ScrollableResults
recuperar todos os dados na memória. Você pode encontrar uma análise completa interessante usando um banco de dados MySql aqui , mas provavelmente o mesmo funciona para um banco de dados Postgres.
Assim também, se você pensa em usar uma solução que não precisa usar muita memória na realidade, isso acontece porque a implementação subjacente não está usando uma implementação ideal.