我需要从 Async Task 发出一堆 http 请求(大约 500 个)。为此,我正在使用 HttpClient。在大约 200 个请求之后,我在 LogCat 上得到了这个:
I/dalvikvm-heap(25912):将堆(碎片情况)增加到 9.321MB,分配 526096 字节 D/dalvikvm(25912):GC_CONCURRENT 释放 3K,1% 释放 9516K/9612K,暂停 3ms+1ms,总共 24ms
发生这种情况时,异步任务会暂停(代码停止执行)。我假设我使用了太多内存,所以我制作了那些静态类变量,所以它们只分配一次:
static HttpClient httpClient = new DefaultHttpClient();
static HttpContext localContext = new BasicHttpContext();
static HttpGet httpGet = new HttpGet();
使用后,其他所有内容都设置为 null。我也尝试在 Manifest "android:largeHeap="true"" 中设置大堆要求,但仍然出现同样的问题。
我无法弄清楚做错了什么。我知道对 500 个 http 请求的要求非常苛刻,但必须有解决方案。有任何想法吗?