关闭ByteArrayOutputStream无效?

use*_*239 55 java

这句话"关闭a ByteArrayOutputStream无效"(http://java.sun.com/javase/6/docs/api/java/io/ByteArrayOutputStream.html#close())是什么意思?

我想确保ByteArrayOutputStream释放内存.难道ByteArrayOutputStream.close()真的释放内存?

谢谢.

Mic*_*rdt 97

ByteArrayOutputStream.close()真的释放内存吗?

不,它绝对没有.你可以看看它的源代码:

public void close() throws IOException {
}
Run Code Online (Sandbox Code Playgroud)

要释放内存,请确保没有对它的引用,并让垃圾收集器执行其操作.就像任何其他普通对象一样.

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

  • (不幸的是,C堆资源也很重要 - 例如,`java.util.zip`中的流.) (4认同)