84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
RT,就酱Java的HttpURLConnecction的getInputStream是否需要close?
这个流是否是系统维护的?因为不是我打开的
业精于勤,荒于嬉;行成于思,毁于随。
养成习惯所有不再用的InputStream和OutputStream都关掉就好了,不管API背后的实现有没有自动帮你关掉。如果用Java 1.7+写的话,用try-with-resource处理起来就非常简单了:
try (InputStream in = urlConnection.getInputStream()) { ... } // 这里会自动调用 in.close();
类似场景还有:
JDBC的PreparedStatement、ResultSet等都实现了AutoCloseable接口,理论上只要Connection被close掉,由它生成的这些PreparedStatement、ResultSet等也会自动close掉,但强烈建议你产生这些资源的时候用try-with-resource来管理。
ServletRequest/ServletResponse中的getInputStream/getOutputStream等资源也是。
需要
在并发操作非常高的情况下, 如果你不关闭, 对系统资源的开销会比较大.
养成习惯所有不再用的InputStream和OutputStream都关掉就好了,不管API背后的实现有没有自动帮你关掉。
如果用Java 1.7+写的话,用try-with-resource处理起来就非常简单了:
类似场景还有:
JDBC的PreparedStatement、ResultSet等都实现了AutoCloseable接口,理论上只要Connection被close掉,由它生成的这些PreparedStatement、ResultSet等也会自动close掉,但强烈建议你产生这些资源的时候用try-with-resource来管理。
ServletRequest/ServletResponse中的getInputStream/getOutputStream等资源也是。
需要
在并发操作非常高的情况下, 如果你不关闭, 对系统资源的开销会比较大.