我需要優化使用太多堆內存的應用程序。 我在使用相同的關閉一個ByteArrayOutputStream變量時遇到了問題。我試圖使用close(),但它不起作用。這是代碼:什麼是關閉ByteArrayOutputStream的最佳方式?
ByteArrayOutputStream zipOutTempStream = new ByteArrayOutputStream();
//arquivo.getZipStream() has the XML received by FTP.
//STreamEtils is the function who transfers the XML to zipOutTempStream
StreamUtils.copiarStream(arquivo.getZipStream(), zipOutTempStream);
//Creating a new XML to write over this.
File arquivo1 = new File("C:/XML.xml");
if (arquivo1.exists()) {
System.out.println("ele existe");
} else {
if (arquivo1.createNewFile()) {
System.out.println("arquivo criado");
} else {
System.out.println("arquivo não criado");
}
}
FileOutputStream arquivo2 = new FileOutputStream(arquivo1);
//Copy the unziped XML to the new xml created.
StreamUtils.copiarStream(StreamUtils .uncompressXmlFromZipStream(new ByteArrayInputStream(zipOutTempStream.toByteArray())), arquivo2);
arquivo.setZipStream(null);
arquivo.setXmlStream(null)
return arquivo;
它不起作用?你有錯誤嗎? – Dan 2012-04-10 19:48:37
'ByteArrayOutputStream'將數據寫入字節數組。關閉'ByteArrayOutputStream'後,可以使用'toByteArray'方法訪問字節數組。簡單地關閉'ByteArrayOutputStream'將不會使字節數組符合垃圾回收。 – emory 2012-04-10 19:52:31
我工作,但問題是,我有一個80MB的XML,並在我保存在C:後,我想釋放使用的堆內存。 – user1324916 2012-04-10 19:58:13