Transmitir archivos grandes en un servlet java

Estoy construyendo un servidor Java que necesita escalar. Uno de los servlets servirá imágenes almacenadas en Amazon S3.

Recientemente bajo carga, me quedé sin memoria en mi VM y fue después de agregar el código para servir las imágenes, así que estoy bastante seguro de que transmitir respuestas de servlet más grandes está causando mis problemas.

Mi pregunta es: ¿existe alguna práctica recomendada sobre cómo codificar un servlet de Java para transmitir una respuesta grande (> 200k) a un navegador cuando se lee desde una base de datos u otro almacenamiento en la nube?

He considerado escribir el archivo en una unidad temporal local y luego generar otro subproceso para manejar la transmisión de modo que el subproceso de servlet tomcat pueda reutilizarse. Parece que sería pesado.

Cualquier pensamiento sería apreciado. Gracias

Respuestas a la pregunta(8)

Su respuesta a la pregunta