Android应用程序永远下载Web内容为字符串(WaitForGcToComplete阻止xx.xxxms导致HeapTrim?)
我是Android开发的新手,我正在尝试创建一个应用程序,只需将给定网页的源代码作为字符串下载并将其显示在日志中。 我有它工作,对于google.com,它的工作相当快。 然而,对于我想要的网页,即使我的计算机的网络浏览器只需几秒钟就可以加载它,它需要十分钟。 在这八分钟内,日志中反复显示四条消息,其值不同。 他们是:
- W / art:暂停所有线程:x.xxxm
- I / art:后台stcky并发标记扫描GC释放xx(xxxxB)AllocSpace对象……
- I / art:后台部分并发标记扫描GC释放xx(xxxxB)AllocSpace对象……
- I / art:WaitForGcToComplete因xx.xxxms而被阻止,原因是HeapTrip
有人可以解释一下发生了什么,以及我如何能够更快地下载这些内容? 这是某种内存问题吗? 我需要使用某种类型的BufferedReader吗?
记录消息:
码:
最后想出了这一个。 问题是String是一个不可变类,这意味着垃圾收集器需要清除从Java的堆内存中读取下载内容时创建的每个String,这是永远需要的。
修复是在doInBackground方法的第一行创建一个新的StringBuilder(),在整个方法中使用StringBuilder代替String,然后在最后,将StringBuilder转换为String(StringBuilder.toString()) 。
- 如何通过蓝牙查询远程手机是否支持PBAP?
- Android:NTLM身份validation,ksoap和持久连接
- 使用apache poi的PatternSyntaxException
- Android studiounit testing:为volley请求编写模拟测试的问题(以非零退出值1结束)
- 如何在java中创建SHA224SUM
- FCM:没有调用onMessageReceived,即使将msg发送到fcm后也没有通知?
- 带字节数组键和字符串值的HashMap – containsKey()函数不起作用
- 在opengl es android中随机位置绘制多个立方体
- Eclipse中的java.lang.NoClassDefFoundError,但不包含Ant