Pause GC Ошибка после обновления Android 4.4.2
Недавно мой Galaxy Note 2 был обновлен до версии 4.4.2. Я использую этот телефон для разработки (с помощью ADT), и жизнь была в порядке, но после этого обновления начала появляться ошибка "Пауза 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
ОБНОВЛЕНИЕ: я инициировал проблему на code.android.com ( http://code.google.com/p/android/issues/detail?id=71073). По их мнению, это ошибка Samsung, поэтому я поднял вопрос на форуме Samsung сейчас.
2 ответа
Увидев эту проблему в течение некоторого времени на моем Note 2 (GT-N7100), Android 4.4.2, я захотел сделать мой комментарий правильным ответом.
Сортировка по размеру размещения:
Я использовал webrtc для отслеживания выделения при использовании камеры Android, и ясно видно, что каждый раз, когда камера вызывается и видео отображается в GLSurfaceView в новом действии, остается более 2 МБ мусора, что составляет никогда не собрал GC.
Для сравнения, аналогичное распределение отслеживается на ASUS Memo Pad 2, Android 4.2.2:
Сортировка по размеру размещения:
Другими словами, в Note 2 вы можете запустить просмотр видео в реальном времени примерно 20-30 раз, до того как память заполнится и устройство выйдет из строя.
Другими словами: Samsung представила эту проблему с обновлением в прошлом году и еще не исправила ее, и они никак не реагируют. Samsung хочет заставить нас купить новое устройство? Похоже на это.
-
А вот мой оригинальный комментарий от 2014-12-11:
Это вызывает проблемы. Это приводит к тому, что устройство занимает гораздо больше памяти, чем необходимо, и происходит сбой. Мы разрабатываем приложение со множеством изображений и видео, и из-за отсутствия GC возможно, что Android достигнет предела в 64 МБ (Примечание 2) и произойдет сбой, тогда как на других устройствах потребление памяти значительно ниже, а память всегда освобождается после использования., Например, ASUS Memo Pad с тем же разрешением потребляет около 12 МБ, а Samsung Note 2 - 24 МБ. Тем не менее, устройство Samsung работает намного быстрее, вероятно, из-за того, что GC не используется
У меня была такая же проблема, как и у вас. Я использовал ACRA, и он глотал сбой и показывал это только в logcat.
Ошибка фактически вернулась на сервер, и я смог правильно отладить. Возможно, отключите ACRA во время отладки, и вы увидите правильную ошибку.