我正在将图像的字节写入ByteArrayOutputStream,然后通过套接字发送它。 问题是,当我做Java写入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。
+0
“image”有哪些属性?尺寸,颜色模型等? –
2012-08-15 14:21:15
+0
你使用多少内存?你的虚拟机设置?图像有多大? –
2012-08-15 14:21:20
+0
你实际上是否在'ImageIO.write(...)'上出现'OutOfMemoryError'? –
2012-08-15 15:11:28