Подтвердить что ты не робот

Пауза GC Ошибка после обновления Android 4.4.2

Недавно моя Galaxy Note 2 была обновлена ​​до версии 4.4.2. Я использую этот телефон для разработки (используя ADT), и жизнь была прекрасной, но после этого обновления появилась ошибка "Pause GC", и я не могу ее решить. Он появляется каждый раз, когда пользовательский экран изменяет статус в моем инструменте ADT LogCat. Ниже дамп ошибки.

Заранее благодарим за помощь.

05-13 22:39:22.538: W/dalvikvm(8350): No implementation found for native Ldalvik/system/VMRuntime;.pauseGc:(Ljava/lang/String;)I
05-13 22:39:22.543: E/MyThread(8350): Pause GC
05-13 22:39:22.543: E/MyThread(8350): java.lang.reflect.InvocationTargetException
05-13 22:39:22.543: E/MyThread(8350):   at java.lang.reflect.Method.invokeNative(Native Method)
05-13 22:39:22.543: E/MyThread(8350):   at java.lang.reflect.Method.invoke(Method.java:515)
05-13 22:39:22.543: E/MyThread(8350):   at android.app.MyThread.pauseGC(MyThread.java:5525)
05-13 22:39:22.543: E/MyThread(8350):   at android.app.MyThread.performLaunchActivity(MyThread.java:2324)
05-13 22:39:22.543: E/MyThread(8350):   at android.app.MyThread.handleLaunchActivity(MyThread.java:2471)
05-13 22:39:22.543: E/MyThread(8350):   at android.app.MyThread.access$900(MyThread.java:175)
05-13 22:39:22.543: E/MyThread(8350):   at android.app.MyThread$H.handleMessage(MyThread.java:1308)
05-13 22:39:22.543: E/MyThread(8350):   at android.os.Handler.dispatchMessage(Handler.java:102)
05-13 22:39:22.543: E/MyThread(8350):   at android.os.Looper.loop(Looper.java:146)
05-13 22:39:22.543: E/MyThread(8350):   at android.app.MyThread.main(MyThread.java:5602)
05-13 22:39:22.543: E/MyThread(8350):   at java.lang.reflect.Method.invokeNative(Native Method)
05-13 22:39:22.543: E/MyThread(8350):   at java.lang.reflect.Method.invoke(Method.java:515)
05-13 22:39:22.543: E/MyThread(8350):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
05-13 22:39:22.543: E/MyThread(8350):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
05-13 22:39:22.543: E/MyThread(8350):   at dalvik.system.NativeStart.main(Native Method)
05-13 22:39:22.543: E/MyThread(8350): Caused by: java.lang.UnsatisfiedLinkError: Native method not found: dalvik.system.VMRuntime.pauseGc:(Ljava/lang/String;)I
05-13 22:39:22.543: E/MyThread(8350):   at dalvik.system.VMRuntime.pauseGc(Native Method)
05-13 22:39:22.543: E/MyThread(8350):   ... 15 more

UPDATE: Я инициировал проблему на code.android.com(http://code.google.com/p/android/issues/detail?id=71073). В соответствии с их ошибкой Samsung, поэтому я поднял вопрос на форуме Samsung сейчас.

4b9b3361

Ответ 1

После просмотра этой проблемы в течение некоторого времени на моей заметке 2 (GT-N7100), Android 4.4.2, я хотел бы сделать свой выше комментарий правильным ответом.

Allocation tracked on Samsung Galaxy Note 2

Отсортировано по размеру размещения:

Sorted by allocation size

Я использовал webrtc для отслеживания выделения при использовании камеры Android, и ясно видно, что каждый раз, когда вызывается камера, и видео отображается в GLSurfaceView в новом действии, более 2 Мбайт мусора остается, который никогда не собирается GC.

Чтобы сравнить, вот то же распределение, которое отслеживается на ASUS Memo Pad 2, Android 4.2.2:

Allocation tracked on Asus Memo Pad 2

Отсортировано по размеру размещения:

Sorted by allocation size

Другими словами, на заметке 2 вы можете начать просмотр видео в режиме реального времени примерно 20-30 раз, прежде чем память будет заполнена и устройство сработает.

Другими словами: Samsung представила эту проблему с обновлением в прошлом году и еще не исправила ее, и они никак не реагируют. Samsung хочет заставить нас купить новое устройство? Похоже на это.

-

И вот мой оригинальный комментарий от 2014-12-11:

Это вызывает проблемы. Это заставляет устройство получать гораздо больше памяти чем нужно, и сбой. Мы разрабатываем приложение со многими изображениями и видео, а из-за отсутствия GC можно сделать Android досягаемость предел 64 МБ (Примечание 2) и сбоя, тогда как в памяти других устройств потребление намного ниже, и память сохраняется после использования. Для Например, ASUS Memo Pad с той же разрешающей способностью 12 МБ, для чего Samsung Note 2 занимает 24 МБ. Устройство Samsung гораздо быстрее, хотя, вероятно, из-за отсутствия GC.

Ответ 2

У меня была такая же проблема, как и вы. Я использовал ACRA, и он проглатывал крах и показывал это только в логарифме.

Ошибка на самом деле вернула сервер, и я смог отлаживать его правильно. Возможно, отключить ACRA при отладке, и вы увидите правильную ошибку.