为什么主线程是VMWAIT-ing?

时间:2014-07-17 16:15:50

标签: java android

少数用户表示,当应用程序将其设置为使用SD卡而不是内部存储器时,应用程序会冻结。请参阅下面的线程转储示例。

我看到“main”组中有三个主题:Binder_2,Thread-1751,Binder_1。我假设Thread-1751是“主”线程,因为它有tid = 1。

根据http://elliotth.blogspot.ch/2012/08/how-to-read-dalvik-sigquit-output.html,VMWAIT意味着“阻止尝试获取托管代码不可见的某些资源,例如内部锁(即pthread_mutex)”。

这是什么意思,更详细?我能做些什么来解决这个问题?这是Android的错误吗?

----- pid 10649 at 2014-07-12 19:22:23 -----
Cmd line: com.myapp

JNI: CheckJNI is off; workarounds are off; pins=0; globals=253

DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)

"Binder_2" prio=5 tid=9 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x423f2dc8 self=0x5c88ebf8
| sysTid=10660 nice=0 sched=0/0 cgrp=apps handle=1552476592
| state=S schedstat=( 353667 253208 4 ) utm=0 stm=0 core=0
#00 pc 00020784 /system/lib/libc.so (__ioctl+8)
#01 pc 0002d11b /system/lib/libc.so (ioctl+14)
#02 pc 0001d3ed /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+140)
#03 pc 0001daf7 /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+6)
#04 pc 0001db8d /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+48)
#05 pc 000219e9 /system/lib/libbinder.so
#06 pc 0000ea5d /system/lib/libutils.so (android::Thread::_threadLoop(void*)+216)
#07 pc 00052959 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+68)
#08 pc 0000e58f /system/lib/libutils.so
#09 pc 0000d298 /system/lib/libc.so (__thread_entry+72)
#10 pc 0000d430 /system/lib/libc.so (pthread_create+240)
at dalvik.system.NativeStart.run(Native Method)

"Thread-1751" prio=10 tid=1 VMWAIT
| group="main" sCount=1 dsCount=0 obj=0x42410068 self=0x419b9a78
| sysTid=10649 nice=-11 sched=0/0 cgrp=apps handle=1075065172
| state=S schedstat=( 460601415 23110414 215 ) utm=38 stm=8 core=3
#00 pc 00021b00 /system/lib/libc.so (__futex_syscall3+8)
#01 pc 0000efec /system/lib/libc.so (__pthread_cond_timedwait_relative+48)
#02 pc 0000f04c /system/lib/libc.so (__pthread_cond_timedwait+64)
#03 pc 0004b597 /system/lib/libdvm.so
#04 pc 00053f91 /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+416)
#05 pc 0000105b /system/bin/app_process
#06 pc 0000e473 /system/lib/libc.so (__libc_init+50)
#07 pc 00000d7c /system/bin/app_process
at dalvik.system.NativeStart.run(Native Method)

"Binder_1" prio=5 tid=8 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x423f2bf8 self=0x5c88e350
| sysTid=10659 nice=0 sched=0/0 cgrp=apps handle=1552474376
| state=S schedstat=( 2537207 3554583 8 ) utm=0 stm=0 core=1
#00 pc 00020784 /system/lib/libc.so (__ioctl+8)
#01 pc 0002d11b /system/lib/libc.so (ioctl+14)
#02 pc 0001d3ed /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+140)
#03 pc 0001daf7 /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+6)
#04 pc 0001db8d /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+48)
#05 pc 000219e9 /system/lib/libbinder.so
#06 pc 0000ea5d /system/lib/libutils.so (android::Thread::_threadLoop(void*)+216)
#07 pc 00052959 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+68)
#08 pc 0000e58f /system/lib/libutils.so
#09 pc 0000d298 /system/lib/libc.so (__thread_entry+72)
#10 pc 0000d430 /system/lib/libc.so (pthread_create+240)
at dalvik.system.NativeStart.run(Native Method)

"FinalizerWatchdogDaemon" daemon prio=5 tid=7 WAIT
| group="system" sCount=1 dsCount=0 obj=0x423ef5e8 self=0x41829748
| sysTid=10658 nice=0 sched=0/0 cgrp=apps handle=1552473272
| state=S schedstat=( 259584 834625 4 ) utm=0 stm=0 core=2
at java.lang.Object.wait(Native Method)
- waiting on <0x41b94588> (a java.lang.Daemons$FinalizerWatchdogDaemon)
at java.lang.Object.wait(Object.java:364)
at java.lang.Daemons$FinalizerWatchdogDaemon.waitForObject(Daemons.java:230)
at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:207)
at java.lang.Thread.run(Thread.java:841)

"FinalizerDaemon" daemon prio=5 tid=6 WAIT
| group="system" sCount=1 dsCount=0 obj=0x423ef490 self=0x418290e8
| sysTid=10657 nice=0 sched=0/0 cgrp=apps handle=1552463464
| state=S schedstat=( 9934169 3447583 13 ) utm=0 stm=0 core=2
at java.lang.Object.wait(Native Method)
- waiting on <0x41b7f718> (a java.lang.ref.ReferenceQueue)
at java.lang.Object.wait(Object.java:401)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:170)
at java.lang.Thread.run(Thread.java:841)

"ReferenceQueueDaemon" daemon prio=5 tid=5 WAIT
| group="system" sCount=1 dsCount=0 obj=0x423ef328 self=0x5c88b008
| sysTid=10656 nice=0 sched=0/0 cgrp=apps handle=1074175112
| state=S schedstat=( 420832 1269417 8 ) utm=0 stm=0 core=2
at java.lang.Object.wait(Native Method)
- waiting on <0x41b7f640> 
at java.lang.Object.wait(Object.java:364)
at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:130)
at java.lang.Thread.run(Thread.java:841)

"Compiler" daemon prio=5 tid=4 VMWAIT
| group="system" sCount=1 dsCount=0 obj=0x423ef238 self=0x40069830
| sysTid=10655 nice=0 sched=0/0 cgrp=apps handle=1074359400
| state=S schedstat=( 1048875 5875 2 ) utm=0 stm=0 core=0
#00 pc 00021b00 /system/lib/libc.so (__futex_syscall3+8)
#01 pc 0000efec /system/lib/libc.so (__pthread_cond_timedwait_relative+48)
#02 pc 0000f04c /system/lib/libc.so (__pthread_cond_timedwait+64)
#03 pc 00074e15 /system/lib/libdvm.so
#04 pc 000558e1 /system/lib/libdvm.so
#05 pc 0000d298 /system/lib/libc.so (__thread_entry+72)
#06 pc 0000d430 /system/lib/libc.so (pthread_create+240)
at dalvik.system.NativeStart.run(Native Method)

"Signal Catcher" daemon prio=5 tid=3 RUNNABLE
| group="system" sCount=0 dsCount=0 obj=0x423ef140 self=0x40096810
| sysTid=10654 nice=0 sched=0/0 cgrp=apps handle=1552515560
| state=R schedstat=( 21042832 1270667 21 ) utm=1 stm=0 core=1
at dalvik.system.NativeStart.run(Native Method)

"GC" daemon prio=5 tid=2 VMWAIT
| group="system" sCount=1 dsCount=0 obj=0x423ef060 self=0x5c728198
| sysTid=10653 nice=0 sched=0/0 cgrp=apps handle=1551005800
| state=S schedstat=( 59327499 10916584 20 ) utm=5 stm=0 core=1
#00 pc 00021b00 /system/lib/libc.so (__futex_syscall3+8)
#01 pc 0000efec /system/lib/libc.so (__pthread_cond_timedwait_relative+48)
#02 pc 0000f04c /system/lib/libc.so (__pthread_cond_timedwait+64)
#03 pc 0007386b /system/lib/libdvm.so
#04 pc 000558e1 /system/lib/libdvm.so
#05 pc 0000d298 /system/lib/libc.so (__thread_entry+72)
#06 pc 0000d430 /system/lib/libc.so (pthread_create+240)
at dalvik.system.NativeStart.run(Native Method)

----- end 10649 -----

0 个答案:

没有答案