java - 我的代码为什么会OutOfMemory
高洛峰
高洛峰 2017-04-17 11:28:53
[Java讨论组]

为什么这样写会出现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);
}
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
怪我咯

第一段:

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

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

第二段:

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号