【发布时间】:2013-07-03 07:03:16
【问题描述】:
我的块代码如下:
URL url = new URL("http://abc.com");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream());
StringBuilder sb = new StringBuilder();
String str = null;
while (null != (str = reader.readLine())) {
sb = sb.append(str);
}
resStr = sb.toString();
reader.close();
con.disconnect();
上面的代码块中有两个我没有关闭的输入流。
第一个是new InputStreamReader(),第二个是con.getInputStream()。我有新的两个输入,但我没有关闭它们。因为这个原因,可能是内存泄漏?
注意:我使用的是 jdk1.7.0_21
【问题讨论】:
-
由于您已经关闭了
reader,因此包装的流将自动关闭。 -
谢谢@DanielRenshaw。这件事我很清楚。
-
由于您使用的是 Java 7,因此您应该使用 try-with-resources 构造来确保您的
reader对象已关闭。目前,如果发生异常,reader将不会关闭。 IE。try (BufferedReader reader = new Buff...) { // reading code }
标签: java