【发布时间】:2014-07-24 04:03:34
【问题描述】:
我们在GcWatcher.finalize, BinderProxy.finalize 和PlainSocketImpl.finalize 中看到了许多TimeoutExceptions。其中 90% 以上发生在 Android 4.3 上。我们收到来自 Crittercism 的来自现场用户的报告。
错误是:“com.android.internal.BinderInternal$GcWatcher.finalize() timed out after 10 seconds”的变体
java.util.concurrent.TimeoutException: android.os.BinderProxy.finalize() timed out after 10 seconds
at android.os.BinderProxy.destroy(Native Method)
at android.os.BinderProxy.finalize(Binder.java:459)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:187)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:170)
at java.lang.Thread.run(Thread.java:841)
到目前为止,我们还没有运气在内部重现问题或找出可能导致它的原因。
有什么想法会导致这种情况吗? 知道如何调试它并找出应用程序的哪个部分导致这种情况吗? 任何能阐明这个问题的东西都会有所帮助。
更多堆栈跟踪:
1 android.os.BinderProxy.destroy
2 android.os.BinderProxy.finalize Binder.java, line 482
3 java.lang.Daemons$FinalizerDaemon.doFinalize Daemons.java, line 187
4 java.lang.Daemons$FinalizerDaemon.run Daemons.java, line 170
5 java.lang.Thread.run Thread.java, line 841
2
1 java.lang.Object.wait
2 java.lang.Object.wait Object.java, line 401
3 java.lang.ref.ReferenceQueue.remove ReferenceQueue.java, line 102
4 java.lang.ref.ReferenceQueue.remove ReferenceQueue.java, line 73
5 java.lang.Daemons$FinalizerDaemon.run Daemons.java, line 170
6 java.lang.Thread.run
3
1 java.util.HashMap.newKeyIterator HashMap.java, line 907
2 java.util.HashMap$KeySet.iterator HashMap.java, line 913
3 java.util.HashSet.iterator HashSet.java, line 161
4 java.util.concurrent.ThreadPoolExecutor.interruptIdleWorkers ThreadPoolExecutor.java, line 755
5 java.util.concurrent.ThreadPoolExecutor.interruptIdleWorkers ThreadPoolExecutor.java, line 778
6 java.util.concurrent.ThreadPoolExecutor.shutdown ThreadPoolExecutor.java, line 1357
7 java.util.concurrent.ThreadPoolExecutor.finalize ThreadPoolExecutor.java, line 1443
8 java.lang.Daemons$FinalizerDaemon.doFinalize Daemons.java, line 187
9 java.lang.Daemons$FinalizerDaemon.run Daemons.java, line 170
10 java.lang.Thread.run
4
1 com.android.internal.os.BinderInternal$GcWatcher.finalize BinderInternal.java, line 47
2 java.lang.Daemons$FinalizerDaemon.doFinalize Daemons.java, line 187
3 java.lang.Daemons$FinalizerDaemon.run Daemons.java, line 170
4 java.lang.Thread.run
【问题讨论】:
-
没关系,找到它bugzilla.mozilla.org/show_bug.cgi?id=864102 我也可以确认它影响了我们的应用程序,它闻起来像 Google Play 服务问题
-
抛出错误的那行代码是在 2013 年 6 月 5 日发布的版本 4.3_r1 中引入的。可能是从那时起出现的问题。
-
Android 版本 4.2.2 也开始抛出此异常,因此可能它的源是 google play 更新。
-
@EvelioTarazona 我在一些不使用播放服务的应用程序中有它
-
@ligi 你的堆栈跟踪是一样的吗?
标签: android garbage-collection