打开的InputStream是否总是会产生泄漏?

时间:2013-12-14 04:22:07

标签: java android inputstream java-6

在工作中发现此代码,我的负责人说,“这可能会导致内存泄漏。”并表现得好像没什么大不了的。

 InputStream is = ...
 GZIPInputStream zis = new GZIPInputStream(new BufferedInputStream(is));
 someMethod(zis);

不关闭输入流。这是在Android中,所以它的Java 1.6,其中InputStream不实现AutoCloseable。这会在每次使用时导致内存泄漏,对吗? (我意识到这也应该在try / catch / finally中完成。)

1 个答案:

答案 0 :(得分:0)

这取决于InputStream。例如。 FileInputStream占用了一些操作系统资源,如果我们不关闭它,可能会导致资源泄漏。但是如果InputStream是ByteArrayInputStream,那么就不会有泄漏。

在任何情况下,我们都应该关闭InputStream,它应该是finally块或更好的try-with-resources语句。