Aja*_*jay 45 android garbage-collection
最近我的Galaxy Note 2升级到4.4.2版本.我正在使用这款手机进行开发(使用ADT)并且生活很好,但发布此升级"暂停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
Run Code Online (Sandbox Code Playgroud)
更新:我已在code.android.com(http://code.google.com/p/android/issues/detail?id=71073)发起了此问题.根据它们的三星bug,所以我现在向三星论坛提出了这个问题.
在我的Note 2(GT-N7100),Android 4.4.2上看到这个问题一段时间后,我想让我的上述评论成为正确的答案.
按分配大小排序:
我使用webrtc来跟踪Android相机的分配情况,可以清楚地看到每次调用相机并在新的Activity中将视频渲染到GLSurfaceView上时,剩余的垃圾超过2 MB,这是从来没有被GC收集过.
为了比较,这里是华硕Memo Pad 2,Android 4.2.2上跟踪的相同分配:
按分配大小排序:
换句话说,在注2中,您可以在内存已满且设备崩溃之前启动视频实时视图大约20-30次.
换句话说:三星在去年更新了这个问题并且还没有修复它,它们也没有做出任何反应.三星是否想让我们购买新设备?看起来像那样.
-
这是我在2014-12-11的原始评论:
它确实会带来麻烦.它导致设备占用的内存远远超过需要和崩溃.我们正在开发一个包含许多图像和视频的应用程序,由于缺少GC,可能会使Android达到64MB限制(注2)并崩溃,而在其他设备上,内存消耗要低得多,内存总是在使用后释放.例如,具有相同分辨率的华硕Memo Pad消耗大约12MB,而Samsung Note 2需要24MB.但是,三星设备要快得多,可能是因为省略了GC.
我和你有同样的问题。我正在使用 ACRA,它正在吞噬崩溃,并且只在 logcat 中显示这一点。
该错误实际上已返回到服务器,并且我能够正确调试。调试时可能禁用 ACRA,您将看到正确的错误。
归档时间: |
|
查看次数: |
7988 次 |
最近记录: |