我正在写入图像字节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
完成后直接处理掉。