为什么这样写会出现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); }
第一段:
line 的值始终不变,这是一个死循环,所以 sb 会越来越大。
第二段:
line 的值会不断改变,最后读到流的末尾,
readLine()
会返回null
,于是循环结束。