为什么这样写会出现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
,于是循环结束。