我的代码为什么会OutOfMemory

为什么这样写会出现OutOfMemory错误,而第二段那样写就不会?

URL url = new URL(urlStr);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
BufferedReader buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
line = buffer.readLine();
while(line != null){
sb.append(line);
}
URL url = new URL(urlStr);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
BufferedReader buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
while ((line = buffer.readLine()) != null) {
sb.append(line);
}
阅读 3.7k
1 个回答

第一段:

line = buffer.readLine();
while (line != null){
    sb.append(line);
}

line 的值始终不变,这是一个死循环,所以 sb 会越来越大。

第二段:

while ((line = buffer.readLine()) != null) {
    sb.append(line);
}

line 的值会不断改变,最后读到流的末尾,readLine() 会返回 null ,于是循环结束。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题