Производительность HeapWorker для Android - PullRequest
0 голосов
/ 07 января 2011
[ 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)

Как решить эту проблему?

Я знаю, что основная причина заключается в создании большого количества временных переменных.

1 Ответ

3 голосов
/ 08 января 2011

Вы просматриваете трассировку стека для неправильного потока.

Проблема в том, что для завершения работы финализатора потребовалось более 10 секунд, поэтому виртуальная машина предположила, что она заблокирована и прервана, что привело к перезагрузке приложения. В этом случае остановленной функцией является android.content.ContentResolver.CursorWrapperInner.finalize ().

Рядом должна быть трассировка стека для потока HeapWorker.

...