在工作中发现此代码,我的负责人说,“这可能会导致内存泄漏。”并表现得好像没什么大不了的。
InputStream is = ...
GZIPInputStream zis = new GZIPInputStream(new BufferedInputStream(is));
someMethod(zis);
不关闭输入流。这是在Android中,所以它的Java 1.6,其中InputStream不实现AutoCloseable。这会在每次使用时导致内存泄漏,对吗? (我意识到这也应该在try / catch / finally中完成。)
答案 0 :(得分:0)
这取决于InputStream。例如。 FileInputStream占用了一些操作系统资源,如果我们不关闭它,可能会导致资源泄漏。但是如果InputStream是ByteArrayInputStream,那么就不会有泄漏。
在任何情况下,我们都应该关闭InputStream,它应该是finally块或更好的try-with-resources语句。