当前位置: 首页 > 知识库问答 >
问题:

Android grow heap frag case同时发出多个http请求

赖星驰
2023-03-14

发生这种情况时,异步任务将暂停(代码停止执行)。我假设我使用了太多的内存,所以我制作了这些静态类变量,所以它们只分配一次:

static HttpClient httpClient = new DefaultHttpClient();
static HttpContext localContext = new BasicHttpContext();
static HttpGet httpGet = new HttpGet();

所有其他的东西在使用后都被设置为空。我也尝试过在清单中设置大堆要求“android:largeheap=”true“”,但还是出现了同样的问题。

我想不出哪里做错了。我知道对500个http请求要求非常苛刻,但必须有解决方案。有什么想法吗?

共有1个答案

席烨
2023-03-14

其实没有任何解决办法,因为这不是一个真正的问题。这只是垃圾收集器在做它的工作,除非1个进度产生数百个这样的,否则我不会太担心。

此外,这是正常的,停止执行您的逻辑一瞬间。这就是GC的工作原理。它会让世界停下来一段时间。

但您做错的是在AsyncTask中执行HTTP请求。这不是AsyncTask的用途,或者至少不适合。它可以导致取消和/或丢失请求。

 类似资料:
  • 这是在收到以db为单位的帖子列表后发送带有每个帖子链接数据的POST请求的代码。 在使用每个链接请求帖子后,从回复中提取playerCount并将其更新到每个帖子。 我在这段代码中使用Resttemplate,但有一个问题需要花费太长时间。 所以我想把这个代码改为一次发送一个请求,并在所有请求完成后更新每个帖子。 我怎样才能把这个代码转换成我想要的? 我将使用此代码作为计划任务。

  • 问题内容: 我正在尝试调试我写的一个简单REST库时遇到的非常异常的错误。 我使用标准的net / http包发出Get,Post,Put,Delete请求,但是当我连续发出多个请求时,我的测试有时会失败。我的测试看起来像这样: 我正在这样请求: 有时它可以工作,但是大多数时候我会出现1或2个失败: 当我提出多个请求时,就会发生失败。如果我注释掉除PUT请求之外的所有内容,则测试将始终通过。一旦包

  • 但是,如下所示的调用序列使用相同的TCP连接。 我还没有对此进行调试,但OkHttp似乎迫使我们首先在主线程上发出阻塞HTTP请求,以获得TCP连接上下文,然后与其他线程共享该上下文?或者,我是不是漏掉了什么?

  • 问题内容: 我正在尝试创建一个http客户端程序,它将发出许多http GET请求。我正在使用缓冲通道来限制并发请求的数量。 当我运行程序时,我得到 这是我的程序: 如何确保文件/足球已关闭,以便在发出多个请求时不会出现此错误? 问题答案: 基本上,您生成了数百个goroutine,这些goroutine将在块关闭之前开始连接。 这是一个快速(非常丑陋)的代码:

  • 问题内容: 我正在尝试发出POST请求以检索有关一本书的信息。这是返回HTTP代码的代码:302,已移动 当我从浏览器尝试时,可以从以下页面进行操作:http : //www.bkstr.com/webapp/wcs/stores/servlet/BuybackMaterialsView?langId=-1&catalogId=10001&storeId=10051&schoolStoreId=1

  • 如果是的话,有谁能向我解释如何做到这一点?