«OutOfMemoryError» может или может не зависеть от объема данных, которые вы пытаетесь сохранить в памяти.Возможно, вам придется изменить максимальный размер кучи.Тем не менее, вы, безусловно, можете избежать записи на диск - просто вместо этого запишите в ByteArrayOutputStream
, тогда вы можете получить данные в виде байтового массива - потенциально создавая ByteArrayInputStream
вокруг него, если вам нужно.Вам определенно нужно добавить их в свой список как BufferedImage
вместо того, чтобы (скажем) сохранить каждый из них как byte[]
?
Обратите внимание, что если вы можете использовать Guava делает бит извлечения данных из InputStream
очень простым:
byte[] data = ByteStreams.toByteArray(tis);