以下编辑
我正在编写一个从网页中抓取内容的应用程序,但是我遇到了一个问题,即获取相对较大(但仍然非常小)的页面正在抨击我的设备的垃圾收集并花费很长时间才能完成
这是我的代码:
// Execute URL.
httpClient = new DefaultHttpClient();
HttpContext httpContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet, httpContext);
// Get response data.
BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));
String result = "";
String line = null;
while((line = reader.readLine()) != null)
{
result += line;
}
httpClient.getConnectionManager().shutdown();
以下是导致问题的网址示例: http://mangafox.me/manga/one_piece/
违规行似乎是httpClient.execute(httpGet,httpContext)行。
以下是我的日志快速填满的小片段:
GC_CONCURRENT freed 3275K, 46% free 4159K/7700K, paused 40ms+14ms, total 102ms
WAIT_FOR_CONCURRENT_GC blocked 60ms
GC_CONCURRENT freed 665K, 47% free 4087K/7700K, paused 14ms+18ms, total 106ms
WAIT_FOR_CONCURRENT_GC blocked 94ms
我想,由于我的经验不足,我的应用程序缺少大量优化,考虑到我的手机浏览器能够正常加载网址。
感谢您的帮助。
修改
我通过使用StringBuilder改进了我的代码,我之前错误地认为它会被Java自动使用。结果我的应用程序效果好了。
我的代码现在如下:
StringBuilder builder = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null)
{
builder.append(line);
}
对于line = reader.readLine()行,是否还有其他改进?