2010-02-24 116 views

回答

66

Does ByteArrayOutputStream.close() 是否真的釋放內存?

不,完全沒有。你可以看一下它的源代碼:

public void close() throws IOException { 
} 

要釋放內存,確保沒有對它的引用,讓垃圾回收器做它的事。就像其他任何普通物體一樣。

基於文件和基於流的流是特殊的,因爲它們使用非內存操作系統資源(文件句柄),您可以從獨立的內存中運行。這就是爲什麼明確關閉它們非常重要。但是這不適用於純粹基於內存的ByteArrayOutputStream

+4

(C堆資源也很重要 - 例如,不幸的是,在java.util.zip中的流)。 – 2010-02-24 23:56:36