我正在將圖像的字節寫入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
。
「image」有哪些屬性?尺寸,顏色模型等? – lost 2012-08-15 14:21:15
你使用多少內存?你的虛擬機設置?圖像有多大? – 2012-08-15 14:21:20
你實際上是否在'ImageIO.write(...)'上出現'OutOfMemoryError'? – 2012-08-15 15:11:28