2010-02-24 112 views

回答

66

Does ByteArrayOutputStream.close() 是否真的释放内存?

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

public void close() throws IOException { 
} 

要释放内存,确保没有对它的引用,让垃圾回收器做它的事。就像其他任何普通物体一样。

基于文件和基于流的流是特殊的,因为它们使用非内存操作系统资源(文件句柄),您可以从独立的内存中运行。这就是为什么明确关闭它们非常重要。但是这不适用于纯粹基于内存的ByteArrayOutputStream

+4

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