【问题标题】:Closing a ByteArrayOutputStream has no effect?关闭 ByteArrayOutputStream 没有效果?
【发布时间】:2011-01-20 19:05:10
【问题描述】:

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

我想确保ByteArrayOutputStream 中的内存被释放。 ByteArrayOutputStream.close()真的会释放内存吗?

谢谢。

【问题讨论】:

    标签: java


    【解决方案1】:

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

    没有。它完全没有任何作用。你可以看一下它的源码:

    public void close() throws IOException {
    }
    

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

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

    【讨论】:

    • (C 堆资源也很重要 - 例如,不幸的是,流入java.util.zip。)
    • 你只是提前让我头疼了,谢谢 :)
    • 文档也明确说明了这一点,在类和close方法javadoc中:docs.oracle.com/javase/8/docs/api/?java/io/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多