2011-01-07 3 views
0
[ 01-01 08:29:02.954 1511:0x5e7 E/dalvikvm ] 
HeapWorker is wedged: 10330ms spent inside Landroid/content/ContentResolver$CursorWrapperInner;.finalize()V 
[ 01-01 08:29:02.954 1511:0x5e7 I/dalvikvm ] 
DALVIK THREADS:  
[ 01-01 08:29:02.954 1511:0x5e7 I/dalvikvm ] 
"main" prio=5 tid=1 RUNNABLE  
[ 01-01 08:29:02.954 1511:0x5e7 I/dalvikvm ] 
    | group="main" sCount=0 dsCount=0 s=N obj=0x400258c8 self=0xcd98 
[ 01-01 08:29:02.954 1511:0x5e7 I/dalvikvm ] 
    | sysTid=1511 nice=0 sched=0/0 cgrp=default handle=-1345021912 
[ 01-01 08:29:02.977 1511:0x5e7 I/dalvikvm ] 
    at java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:Note: 0000662) 
[ 01-01 08:29:02.977 1511:0x5e7 I/dalvikvm ] 
    at java.lang.StringBuilder.toString(StringBuilder.java:664) 
[ 01-01 08:29:02.977 1511:0x5e7 I/dalvikvm ] 
    at java.io.File.join(File.java:264) 
[ 01-01 08:29:02.977 1511:0x5e7 I/dalvikvm ] 
    at java.io.File.<init>(File.java:175) 
[ 01-01 08:29:02.977 1511:0x5e7 I/dalvikvm ] 
    at java.io.File.<init>(File.java:142) 
[ 01-01 08:29:02.977 1511:0x5e7 I/dalvikvm ] 
    at java.io.File.filenamesToFiles(File.java:1082) 
[ 01-01 08:29:02.977 1511:0x5e7 I/dalvikvm ] 
    at java.io.File.listFiles(File.java:1008) 

이 문제를 해결하는 방법?HeapWorker Android 성능

근본 원인이 많은 임시 변수에 생성된다는 것을 알고 있습니다.

답변

3

잘못된 스레드에 대한 스택 추적을보고 있습니다.

문제는 finalizer가 완료되는 데 10 초 이상 걸렸으므로 VM은 교착 상태에 빠졌고 앱이 다시 시작되도록 중단했습니다. 이 경우 stalled 함수는 android.content.ContentResolver.CursorWrapperInner.finalize()입니다.

근처의 HeapWorker 스레드에 대한 스택 추적이 있어야합니다.

+0

'HeapWorker가 끼어 들었습니다 : 33299ms가 Landroid/database/sqlite/SQLiteCompiledSql; .finalize() V' 내부에서 보냈습니다. 중첩 된 sqlite 트랜잭션이이 문제를 일으킬 수 있습니까? –

+0

파이널 라이저 BTW 란 무엇입니까? –

+0

또한 Nexus 4에서 정상적으로 작동하는 에뮬레이터에서만 이러한 현상이 발생합니다. –