大佬教程收集整理的这篇文章主要介绍了Android错误:HeapWorker被楔入… BinderInternal $GcWatcher,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
ERROR/dalvikvm(7051): HeapWorker is wedged: 10037ms spent inside Lcom/android/internal/os/BinderInternal$GcWatcher;.finalize()V
所以看起来GCWatcher正在采取> 10s完成.
当AsyncTask通过http从远程服务器检索/传递数据时会发生这种情况.它并不总是抛出这个错误,它只是最近才开始发生…以前这个工作正常,应用程序代码没有变化.
任何人都知道导致此错误的原因以及如何阻止它?
GcWatcher.finalize方法非常简单.如果它需要10秒钟才能运行,那是因为线程正被系统的其余部分匮乏.通常发生的是该进程中的一些其他低优先级线程正在尝试进行分配,但最终停滞不前,因为cpu不想再给它一点时间.当GcWatcher.finalize尝试创建新的可终结对象时,(正常优先级)HeapWorker线程会卡住. (参见“优先倒置”)
在一个安静的系统上,这不应该发生,因为每个线程都应该有足够的时间来完成一些工作.
您应该在logcat中拥有完整的堆栈跟踪.看看其他线程在哪里.你可能还想运行像“top”这样的程序,看看你最近安装的东西是否吸收了所有的cpu并加剧了这种情况.
以上是大佬教程为你收集整理的Android错误:HeapWorker被楔入… BinderInternal $GcWatcher全部内容,希望文章能够帮你解决Android错误:HeapWorker被楔入… BinderInternal $GcWatcher所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。