如果您不关闭网址连接会怎样?

时间:2014-08-11 20:09:02

标签: java inputstream

当您关闭以下输入流时会发生什么?

InputStream is = new URL(queryUrl).openStream();

由于它是一个URL连接,它是否足够聪明,可以在请求后自动关闭?

我试着查看文档,但它很模糊。根据我们收集的内容,这与执行HTTPUrlConnection.getInputStream()相同。

我只想弄清楚不做is.close()的影响。这肯定会导致资源泄漏吗?

1 个答案:

答案 0 :(得分:2)

当您致电close时,会释放相关的系统资源。如果你看一下方法URL.openStream()

的实现
public final InputStream openStream() throws java.io.IOException {
   return openConnection().getInputStream();
}
public URLConnection openConnection() throws java.io.IOException {
   return handler.openConnection(this);
}

根据javadoc

返回URLConnection
  

在请求之后调用URLConnection的InputStream或OutputStream上的close()方法可以释放与此实例关联的网络资源,除非特定的协议规范为其指定了不同的行为。

例如,如果您看到HttpURLConnection,他们的文档会说:

  

在请求之后调用HttpURLConnection的InputStream或OutputStream上的close()方法可以释放与此实例关联的网络资源,但不会影响任何共享持久连接。如果此时持久连接处于空闲状态,则调用disconnect()方法可能会关闭底层套接字。

干杯!!