【问题标题】:Pause GC Error post android 4.4.2 upgradeandroid 4.4.2 升级后暂停 GC 错误
【发布时间】:2014-05-13 17:23:54
【问题描述】:

最近我的 Galaxy Note 2 升级到了 4.4.2 版本。我正在使用这款手机进行开发(使用 ADT),生活还不错,但发布此升级后“Pause GC”错误开始出现,我无法解决。每当我的 ADT 工具 LogCat 中的 UI 屏幕更改状态时,它都会出现。下面是错误的转储。

提前感谢您的帮助。

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) 提出了这个问题。根据他们的三星错误,所以我现在已经向三星论坛提出了这个问题。

【问题讨论】:

  • 是的,最近我的笔记 2 上也有 4.4.2 更新。从那天开始就出现这个错误。
  • 我做了一个练习,在 ADT 工具中创建了一个空白活动(默认情况下),然后在我的手机上运行,​​然后又遇到了同样的错误。这排除了我在编码中的任何错误。我还用所有最新更新更新了我的 ADT 工具,但情况是原样。
  • 在 Galaxy Note 8 (GT-N5110, 4.4.2) 上遇到同样的错误 - Note 10 2014 Edition 上的完全相同的应用程序可以正常工作 (SM-P600, 4.4.2)。同样的应用程序也可以在 Acer A1-840FHD (4.4.2)、Nexus 7 (4.4.4) 上正常运行。
  • 这里也一样。注 2,更新到 4.4.2。幸运的是,除了 logcat 中的那条讨厌的消息,似乎没有造成任何麻烦。

标签: android garbage-collection


【解决方案1】:

在我的 Note 2 (GT-N7100),Android 4.4.2 上看到这个问题一段时间后,我想让我的上述评论成为一个正确的答案。

按分配大小排序:

我在使用Android摄像头的时候使用webrtc来跟踪分配,可以清楚的看到每次调用摄像头,在新的Activity中将视频渲染到GLSurfaceView上,剩余2MB多的垃圾, GC 永远不会收集到。

为了比较,以下是在 ASUS Memo Pad 2、Android 4.2.2 上跟踪的相同分配:

按分配大小排序:

换句话说,在 Note 2 上,您可以在内存已满和设备崩溃之前启动视频实时取景大约 20-30 次。

换句话说:三星去年通过更新引入了这个问题,但尚未修复它,他们也没有做出任何反应。三星是否想让我们购买新设备?好像是这样的。

--

这是我截至 2014 年 12 月 11 日的原始评论:

这确实会造成麻烦。它会导致设备占用更多内存 比需要和崩溃。我们正在开发一个包含许多图像和 视频,并且由于缺少 GC,因此可以使 Android 到达 64MB 限制(注 2)和崩溃,而在其他设备上的内存 消耗要低得多,并且内存总是在使用后释放。为了 例如,具有相同分辨率的 ASUS 记事本会消耗大约 12MB,三星 Note 2 需要 24MB。三星设备是 不过,速度要快得多,这可能是因为省略了 GC。

【讨论】:

  • 哦,我忘了指出用户甚至不会意识到它的设备发生了什么故障。他们会指向制作应用程序的人,因为“不幸的是,......”(你明白了!)
【解决方案2】:

我和你有同样的问题。我正在使用 ACRA,它正在吞噬崩溃,只在 logcat 中显示。

该错误实际上已返回服务器,并且我能够正确调试。可能在调试时禁用 ACRA,你会看到正确的错误。

【讨论】:

  • 如何检查我的工具中是否启用了 ACRA 并禁用它。
  • 您会知道它是否已启用。您必须将库包含到您的项目中并进行一些配置以安装 ACRA。您会在应用程序的主要入口点看到它。您会看到如下内容:@ReportsCrashes(formKey = "", formUri = "yourselectedbackend.com/reportpath") public class MyApplication extends Application ...
  • 这与问题的原因无关,因此在任何实际意义上都不是答案。您基本上观察到的是,如果您碰巧使用 ACRA,它可能会隐藏此消息(尽管这有点令人惊讶)。然而,它是否会导致它是非常值得怀疑的。真正的问题是一些Android供应商版本中的错误,因此高级代码习惯于刺穿抽象面纱在内部结构中踢出一些东西,然后内部结构发生了变化,因此电流后面的盲区目标不再存在。
  • @Chris Stratton :不,不是原因,但它可能会帮助在我的情况下只能在 logcat 中解决这个问题的人。只是想帮忙。
猜你喜欢
  • 2021-05-20
  • 1970-01-01
  • 2021-11-07
  • 2015-11-12
  • 2016-02-22
  • 1970-01-01
  • 2015-05-08
  • 2019-03-18
  • 1970-01-01
相关资源
最近更新 更多