在Java中,什么时候URL连接closures?

什么时候Java放弃到一个URL的连接? 我没有看到URL或URLConnection的close()方法,所以只要请求结束就释放连接。 我主要要求看看是否需要在exception处理程序中进行清理。

try { URL url = new URL("http://foo.bar"); URLConnection conn = url.openConnection(); // use the connection } catch (Exception e) { // any clean up here? } 

它取决于协议中指定的特定协议。 有些保持持续的连接,其他的连接在你的调用在连接给出的input或输出stream中closures时closures它们的连接。 但除了记住closures从URLConnection打开的stream之外,没有别的办法可以做。

从java.net.URLConnection的javadoc

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

如果转换为HttpURLConnection,则有一个disconnect()方法。 如果连接空闲,它可能会立即断开连接。 没有保证。