Я пишу байты изображения в ByteArrayOutputStream
, а затем отправляю его через сокет. Проблема в том, что когда я делаю
ImageIO.write(image, "gif", byteArray);
Память увеличивается ОЧЕНЬ сильно, какая-то утечка памяти.
я отправляю с помощью этого
ImageIO.write(image, "gif", byteArrayO);
byte [] byteArray = byteArrayO.toByteArray();
byteArrayO.flush();
byteArrayO.reset();
Connection.pw.println("" + byteArray.length);
int old = Connection.client.getSendBufferSize();
Connection.client.setSendBufferSize(byteArray.length);
Connection.client.getOutputStream().write(byteArray, 0, byteArray.length);
Connection.client.getOutputStream().flush();
image.flush();
image = null;
byteArrayO = null;
byteArray = null;
System.gc();
Connection.client.setSendBufferSize(old);
Как видите, я перепробовал все способы, ошибка возникает при записи в ByteArrayOutputStream
, а не при передаче. Приемник не получает никаких ошибок.
В любом случае я могу очистить byteArray и удалить все, что в нем есть, из памяти? Я знаю, что reset()
есть, но здесь его нет. Я хочу сразу избавиться от ByteArrayOutputStream
, когда это будет сделано.
image
? Размеры, цветовая модель и т.д.? - person lost   schedule 15.08.2012OutOfMemoryError
наImageIO.write(...)
? - person Christoffer Hammarström   schedule 15.08.2012