Пауза 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 сейчас.
Ответы
Ответ 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 при отладке, и вы увидите правильную ошибку.