Проблема с управлением памятью при обработке изображений Android по протоколу http - PullRequest
1 голос
/ 06 октября 2010

У меня проблема с управлением памятью.Я загружаю некоторые данные через мой HTTP-клиент.Следующая вещь, которую я хочу, чтобы отобразить данные для пользователя.Проблема нестабильна, на некоторых файлах того же типа она возникает, на некоторых нет.Стабильно то, что это происходит в том же файле.

Вот вход LogCat.

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

Если вам нужно больше данных, пожалуйста, дайте мне знать.

10-06 16:23:26.281: DEBUG/pecman(2035): szPath - http://demo.pecman.net/webdav/xbUxVPxnRme17FKS898BTCtEtRJUY/CGxrTVdeRssGWjMlCfEElJmA==/P1000887.JPG
10-06 16:23:26.281: DEBUG/pecman(2035): szMime - image/jpeg
10-06 16:23:26.422: INFO/ActivityManager(1277): Displayed activity com.verdandsky.pecman/.MediaPlayerActivity: 380 ms (total 380 ms)
10-06 16:23:27.023: DEBUG/dalvikvm(2035): GC freed 1962 objects / 388136 bytes in 102ms
10-06 16:23:27.023: INFO/dalvikvm-heap(2035): Grow heap (frag case) to 6.314MB for 519160-byte allocation
10-06 16:23:27.086: DEBUG/dalvikvm(2035): GC freed 37 objects / 1544 bytes in 64ms
10-06 16:23:27.648: DEBUG/dalvikvm(2035): GC freed 38 objects / 259232 bytes in 82ms
10-06 16:23:27.750: INFO/dalvikvm-heap(2035): Grow heap (frag case) to 7.022MB for 1052024-byte allocation
10-06 16:23:27.844: DEBUG/dalvikvm(2035): GC freed 0 objects / 0 bytes in 89ms
10-06 16:23:28.492: DEBUG/dalvikvm(2035): GC freed 6 objects / 519312 bytes in 103ms
10-06 16:23:28.805: INFO/dalvikvm-heap(2035): Grow heap (frag case) to 8.544MB for 2116208-byte allocation
10-06 16:23:28.898: DEBUG/dalvikvm(2035): GC freed 0 objects / 0 bytes in 92ms
10-06 16:23:29.063: DEBUG/AudioHardwareMot(1055): AudioMgr:AudioStreamOutMot::standby called
10-06 16:23:29.063: DEBUG/AudioHardwareMot(1055): AudioMgr:Output 0xb538 entering standby
10-06 16:23:29.071: DEBUG/AudioHardwareMot(1055): AudioMgr:Closing stereo device
10-06 16:23:30.351: DEBUG/dalvikvm(2035): GC freed 46 objects / 1054384 bytes in 99ms
10-06 16:23:30.390: INFO/dalvikvm-heap(2035): Grow heap (frag case) to 11.585MB for 4242456-byte allocation
10-06 16:23:30.453: DEBUG/dalvikvm(2035): GC freed 0 objects / 0 bytes in 61ms
10-06 16:23:32.328: DEBUG/dalvikvm(2035): GC freed 9 objects / 2118544 bytes in 53ms
10-06 16:23:32.375: DEBUG/dalvikvm(2035): GC freed 2 objects / 48 bytes in 49ms
10-06 16:23:32.390: INFO/dalvikvm-heap(2035): Grow heap (frag case) to 13.019MB for 3622512-byte allocation
10-06 16:23:32.469: DEBUG/dalvikvm(2035): GC freed 0 objects / 0 bytes in 82ms
10-06 16:23:32.531: DEBUG/dalvikvm(2035): GC freed 0 objects / 0 bytes in 60ms
10-06 16:23:32.945: INFO/dalvikvm-heap(2035): Grow heap (frag case) to 16.474MB for 3622512-byte allocation
10-06 16:23:33.062: DEBUG/dalvikvm(2035): GC freed 0 objects / 0 bytes in 120ms
10-06 16:23:33.062: ERROR/dalvikvm-heap(2035): 14155776-byte external allocation too large for this process.
10-06 16:23:33.062: ERROR/(2035): VM won't let us allocate 14155776 bytes
10-06 16:23:33.062: DEBUG/skia(2035): --- decoder->decode returned false
10-06 16:23:33.117: DEBUG/dalvikvm(2035): GC freed 6 objects / 7245192 bytes in 50ms
10-06 16:23:33.164: DEBUG/dalvikvm(2035): GC freed 2 objects / 48 bytes in 49ms
10-06 16:23:33.172: INFO/dalvikvm-heap(2035): Grow heap (frag case) to 13.020MB for 3622512-byte allocation
10-06 16:23:33.258: DEBUG/dalvikvm(2035): GC freed 0 objects / 0 bytes in 80ms
10-06 16:23:33.320: DEBUG/dalvikvm(2035): GC freed 0 objects / 0 bytes in 63ms
10-06 16:23:33.328: INFO/dalvikvm-heap(2035): Grow heap (frag case) to 16.474MB for 3622512-byte allocation
10-06 16:23:33.422: DEBUG/dalvikvm(2035): GC freed 0 objects / 0 bytes in 91ms
10-06 16:23:33.422: ERROR/dalvikvm-heap(2035): 14155776-byte external allocation too large for this process.
10-06 16:23:33.422: ERROR/(2035): VM won't let us allocate 14155776 bytes
10-06 16:23:33.422: DEBUG/skia(2035): --- decoder->decode returned false
10-06 16:23:33.422: WARN/dalvikvm(2035): threadid=13: thread exiting with uncaught exception (group=0x4001b170)
10-06 16:23:33.422: ERROR/AndroidRuntime(2035): Uncaught handler: thread Thread-46 exiting due to uncaught exception
10-06 16:23:33.430: ERROR/AndroidRuntime(2035): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
10-06 16:23:33.430: ERROR/AndroidRuntime(2035):     at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)
10-06 16:23:33.430: ERROR/AndroidRuntime(2035):     at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:392)
10-06 16:23:33.430: ERROR/AndroidRuntime(2035):     at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:405)
10-06 16:23:33.430: ERROR/AndroidRuntime(2035):     at com.verdandsky.pecman.HttpClient.doGetImage(HttpClient.java:309)
10-06 16:23:33.430: ERROR/AndroidRuntime(2035):     at com.verdandsky.pecman.ImageCache$1.run(ImageCache.java:79)
10-06 16:23:33.430: INFO/Process(1277): Sending signal. PID: 2035 SIG: 3
10-06 16:23:33.430: INFO/dalvikvm(2035): threadid=7: reacting to signal 3
10-06 16:23:33.508: INFO/dalvikvm(2035): Wrote stack trace to '/data/anr/traces.txt'

Спасибо за ваше время заранее.

...