InputStream.readAllBytes()
allows us to avoid the creation of an intermediate ByteArrayOutputStream
and is likely to perform better.
Comment From: sbrannen
This has been merged into main
.
Thanks
Comment From: edudar-chwy
One caveat is that it might be faster but also greedier. With this implementation, when one tries to read all bytes from an uploaded file, the underlying ChannelInputStream
allocates a direct buffer of the file's size. With large enough files, that requires a pretty significant MaxDirectMemorySize setting. The memory calculator used by java-buildpack blocks out that memory, and this is not optimal when running in low-footprint containers.