gpt4 book ai didi

java - Android 应用程序永远将 Web 内容下载为字符串(WaitForGcToComplete 由于 HeapTrim 而被阻止 xx.xxxms?)

转载 作者:搜寻专家 更新时间:2023-11-01 07:51:47 28 4
gpt4 key购买 nike

我是 Android 开发的新手,我正在尝试制作一个应用程序,它只需将给定网页的源代码下载为字符串并将其显示在日志中。我让它工作,对于 google.com,它工作得相当快。然而,对于我想要的网页,它需要八分钟,即使我的计算机的网络浏览器可以在几秒钟内加载它。在这 8 分钟内,日志中反复显示了 4 条消息,其值各不相同。它们是:

  • W/art:挂起所有线程花费了:x.xxxm
  • I/art:背景 stcky 并发标记清除 GC 释放了 xx(xxxxB) 个 AllocSpace 对象...
  • I/art:后台部分并发标记清除 GC 释放了 xx(xxxxB) 个 AllocSpace 对象...
  • I/art:WaitForGcToComplete 因 HeapTrip 而被阻止 xx.xxxms

谁能解释一下这是怎么回事,我怎样才能让这些内容的下载速度显着加快?这是某种内存问题吗?我需要使用某种 BufferedReader 吗?

记录信息:
Click here for a log screenshot messages.

代码:
Click here for my code.

最佳答案

终于想通了。问题是 String 是一个不可变的类,这意味着垃圾收集器需要清除在从 Java 的堆内存中读取下载的内容时创建的每个 String,这需要永远。

修复方法是在 doInBackground 方法的第一行创建一个新的 StringBuilder(),在整个方法中使用该 StringBuilder 代替 String,然后在最后,将 StringBuilder 转换为 String (StringBuilder.toString ()).

关于java - Android 应用程序永远将 Web 内容下载为字符串(WaitForGcToComplete 由于 HeapTrim 而被阻止 xx.xxxms?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34110814/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com