首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android回收器E/AndroidRuntime:致命异常: main

基础概念

Android回收器(Garbage Collector)是Android运行时环境(ART)的一部分,负责自动管理应用程序的内存分配和回收。它通过跟踪对象的引用情况,自动释放不再使用的对象所占用的内存,从而避免内存泄漏和内存溢出等问题。

相关优势

  1. 自动内存管理:开发者无需手动释放内存,减少了内存泄漏的风险。
  2. 提高应用性能:通过及时回收不再使用的内存,可以避免内存碎片化,提高应用的运行效率。
  3. 简化开发工作:开发者可以更专注于业务逻辑的实现,而不必过多关注内存管理细节。

类型

Android回收器主要分为以下几种类型:

  1. 标记-清除(Mark-Sweep):首先标记所有活动对象,然后清除未标记的对象。
  2. 复制(Copying):将活动对象从一个内存区域复制到另一个内存区域,然后清除原区域的所有对象。
  3. 标记-整理(Mark-Compact):首先标记所有活动对象,然后将活动对象整理到内存的一端,最后清除边界外的所有对象。

应用场景

Android回收器广泛应用于各种Android应用程序中,特别是在需要处理大量数据和复杂逻辑的应用中,如社交应用、游戏、多媒体处理等。

常见问题及解决方法

问题:E/AndroidRuntime:致命异常: main

这个错误通常是由于内存溢出(Out of Memory)导致的。以下是一些可能的原因和解决方法:

  1. 图片资源过大:加载过大的图片会导致内存占用过高。
    • 解决方法:使用图片压缩工具减小图片大小,或者使用BitmapFactory.Options类进行缩放加载。
    • 解决方法:使用图片压缩工具减小图片大小,或者使用BitmapFactory.Options类进行缩放加载。
  • 内存泄漏:某些对象被错误地持有引用,导致无法被回收。
    • 解决方法:检查代码中的引用关系,确保不再使用的对象能够被正确释放。可以使用内存分析工具(如MAT)来帮助定位问题。
  • 频繁的内存分配:短时间内大量分配内存会导致内存碎片化。
    • 解决方法:优化代码逻辑,减少不必要的内存分配。可以使用对象池技术来复用对象,减少内存分配次数。
  • 第三方库问题:某些第三方库可能存在内存管理问题。
    • 解决方法:检查使用的第三方库,确保其版本是最新的,并且没有已知的内存管理问题。如果问题依然存在,可以考虑替换其他可靠的库。

参考链接

通过以上方法,可以有效解决Android回收器导致的致命异常问题。如果问题依然存在,建议进一步分析具体的错误日志和堆栈信息,以便更精确地定位问题所在。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android Bitmap 内存溢出的问题

09-29 13:35:41.884: E/SQLiteLog(20098): (10) Failed to do file read, got: 0, amt: 100, last Errno: 2 09-29 13:35:46.857: E/dalvikvm-heap(20098): Out of memory on a 31360016-byte allocation. 09-29 13:35:46.862: E/AndroidRuntime(20098): FATAL EXCEPTION: main 09-29 13:35:46.862: E/AndroidRuntime(20098): Process: com.example.nongmin, PID: 20098 09-29 13:35:46.862: E/AndroidRuntime(20098): java.lang.OutOfMemoryError 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:616) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:451) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.content.res.Resources.loadDrawable(Resources.java:2235) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.content.res.Resources.getDrawable(Resources.java:722) 09-29 13:35:46.862: E/AndroidRuntime(20098): at com.jarvis.message.ChatMain.onCreate(ChatMain.java:121) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.Activity.performCreate(Activity.java:5451) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2346) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2443) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.ActivityThread.access$800(ActivityThread.java:157) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.os.Handler.dispatchMessage(H

03
  • android学习各种bug(5)

    09-26 01:20:33.336: E/AndroidRuntime(1854): FATAL EXCEPTION: main 09-26 01:20:33.336: E/AndroidRuntime(1854): Process: com.example.nongmin, PID: 1854 09-26 01:20:33.336: E/AndroidRuntime(1854): java.lang.ClassCastException: android.widget.ImageView cannot be cast to android.widget.TextView 09-26 01:20:33.336: E/AndroidRuntime(1854): at com.jarvis.mytaobao.user.User_F.initView(User_F.java:77) 09-26 01:20:33.336: E/AndroidRuntime(1854): at com.jarvis.mytaobao.user.User_F.onCreateView(User_F.java:67) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.os.Handler.handleCallback(Handler.java:733) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.os.Handler.dispatchMessage(Handler.java:95) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.os.Looper.loop(Looper.java:136) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.app.ActivityThread.main(ActivityThread.java:5017) 09-26 01:20:33.336: E/AndroidRuntime(1854): at java.lang.reflect.Method.invokeNative(Native Method) 09-26 01:20:33.336: E/AndroidRuntime(1854): at java.lang.reflect.Method.invoke(Method.java:515) 09-26 01:20:33.336: E/AndroidRuntime(1854): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 09-26 01:20:33.336: E/AndroidRuntime(185

    03

    Android调试的各种bug

    09-20 17:55:38.457: E/AndroidRuntime(14963): FATAL EXCEPTION: main 09-20 17:55:38.457: E/AndroidRuntime(14963): Process: com.clockrock.freeshare, PID: 14963 09-20 17:55:38.457: E/AndroidRuntime(14963): java.lang.NoSuchMethodError: com.clockrock.tieba.WritePostActivity.getDrawable 09-20 17:55:38.457: E/AndroidRuntime(14963): at com.clockrock.tieba.WritePostActivity.onCreate(WritePostActivity.java:236) 09-20 17:55:38.457: E/AndroidRuntime(14963): at android.app.Activity.performCreate(Activity.java:5451) 09-20 17:55:38.457: E/AndroidRuntime(14963): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097) 09-20 17:55:38.457: E/AndroidRuntime(14963): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2346) 09-20 17:55:38.457: E/AndroidRuntime(14963): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2443) 09-20 17:55:38.457: E/AndroidRuntime(14963): at android.app.ActivityThread.access$800(ActivityThread.java:157) 09-20 17:55:38.457: E/AndroidRuntime(14963): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 09-20 17:55:38.457: E/AndroidRuntime(14963): at android.os.Handler.dispatchMessage(Handler.java:110) 09-20 17:55:38.457: E/AndroidRuntime(14963): at android.os.Looper.loop(Looper.java:193) 09-20 17:55:38.457: E/AndroidRuntime(14963): at android.app.ActivityThread.main(ActivityThread.java:5348) 09-20 17:55:38.457: E/AndroidRuntime(14963): at java.lang.reflect.Method.invokeNative(Native Method) 09-20 17:55:38.457: E/AndroidRuntime(14963): at java.lang.reflect.Method.invoke(Method.java:515) 09-20 17:55:38.457: E/AndroidRuntime(14963): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829) 09-20 17:55:38.457: E/AndroidRuntime(14963): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645) 09-20 17:55:38.457: E/AndroidRuntime(14963): at dalvik.system.NativeStart.main(Native Method) 错误原因:actionbar导致的问题,theme用了自定义的方法, 09-21 20:47:27.169: V/ActivityThread(1

    03

    mView has no focus+DecorView setVisiblity: visibility = 4+Finishing stop of ActivityRecord

    09-24 18:22:23.692: E/AndroidRuntime(22703): FATAL EXCEPTION: main 09-24 18:22:23.692: E/AndroidRuntime(22703): Process: com.example.nongmin, PID: 22703 09-24 18:22:23.692: E/AndroidRuntime(22703): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.nongmin/com.jarvis.user.info.UApplyedActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class com.clockrock.widget.PullToRefreshLayout 09-24 18:22:23.692: E/AndroidRuntime(22703): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2392) 09-24 18:22:23.692: E/AndroidRuntime(22703): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2443) 09-24 18:22:23.692: E/AndroidRuntime(22703): at android.app.ActivityThread.access$800(ActivityThread.java:157) 09-24 18:22:23.692: E/AndroidRuntime(22703): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 09-24 18:22:23.692: E/AndroidRuntime(22703): at android.os.Handler.dispatchMessage(Handler.java:110) 09-24 18:22:23.692: E/AndroidRuntime(22703): at android.os.Looper.loop(Looper.java:193) 09-24 18:22:23.692: E/AndroidRuntime(22703): at android.app.ActivityThread.main(ActivityThread.java:5348) 09-24 18:22:23.692: E/AndroidRuntime(22703): at java.lang.reflect.Method.invokeNative(Native Method) 09-24 18:22:23.692: E/AndroidRuntime(22703): at java.lang.reflect.Method.invoke(Method.java:515) 09-24 18:22:23.692: E/AndroidRuntime(22703): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829) 09-24 18:22:23.692: E/AndroidRuntime(22703): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645) 09-24 18:22:23.692: E/AndroidRuntime(22703): at dalvik.system.NativeStart.main(Native Method) 09-24 18:22:23.692: E/AndroidRuntime(22703): Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class com.clockrock.widget.PullToRefreshLayout 09-24 18:22:23.692: E/AndroidRuntime(22703): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java

    02

    “did not call through to super.onResume”问题解决「建议收藏」

    12-23 22:47:26.720: W/dalvikvm(3864): threadid=1: thread exiting with uncaught exception (group=0x410af9d8) 12-23 22:47:26.720: E/AndroidRuntime(3864): FATAL EXCEPTION: main 12-23 22:47:26.720: E/AndroidRuntime(3864): java.lang.RuntimeException: Unable to resume activity {com.project.app/com.ui.activity.MainSFA}: android.app.SuperNotCalledException: Activity {com.project.app/com.ui.activity.MainSFA} did not call through to super.onResume() 12-23 22:47:26.720: E/AndroidRuntime(3864): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2457) 12-23 22:47:26.720: E/AndroidRuntime(3864): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2485) 12-23 22:47:26.720: E/AndroidRuntime(3864): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1999) 12-23 22:47:26.720: E/AndroidRuntime(3864): at android.app.ActivityThread.access600(ActivityThread.java:126) 12-23 22:47:26.720: E/AndroidRuntime(3864): at android.app.ActivityThreadH.handleMessage(ActivityThread.java:1150) 12-23 22:47:26.720: E/AndroidRuntime(3864): at android.os.Handler.dispatchMessage(Handler.java:99) 12-23 22:47:26.720: E/AndroidRuntime(3864): at android.os.Looper.loop(Looper.java:137) 12-23 22:47:26.720: E/AndroidRuntime(3864): at android.app.ActivityThread.main(ActivityThread.java:4439)

    02

    解决异常Circular dependencies cannot exist in RelativeLayout

    今天碰到这个error:E/AndroidRuntime( 4657): Uncaught handler: thread main exiting due to uncaught e xception E/AndroidRuntime( 4657): java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout 有点郁闷,我用的是skd1.5,在1.5的机器上(HTC G3)已经测试过了,没有问题的,但放在华为c8500(2.1update)上就报上面的错了,怎么回事呢? 根据提示判断应该是布局的原因,于是找到RelativeLayout的布局,找出最可疑的那个,注释后,不报错了。好就是他的原因,挨个看里面的元素,看属性,没错啊,后来发现, <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true"> <TextView android:id="@+id/titleName" android:text="首页" android:textColor="@color/white" android:layout_toLeftOf="@+id/homeBtn" android:layout_marginRight="2px" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <ImageButton android:id="@+id/homeBtn" android:layout_toRightOf="@+id/titleName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main" android:background="@null" android:layout_marginRight="10px"> </ImageButton> </RelativeLayout> 后来改成: <RelativeLayout android:layout_width="wrap_content" android:layout_marginRight="10px" android:layout_height="wrap_content" android:layout_alignParentRight="true"> <TextView android:id="@+id/titleName" android:text="首页" android:textColor="@color/white" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <ImageButton android:id="@+id/homeBtn" android:layout_marginLeft="2px" android:layout_marginTop="2px" android:layout_toRightOf="@+id/titleName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main" android:background="@null" > </ImageButton> </RelativeLayout> 能看到区别吗?对就是在titleName中去掉了相对homeBtn的位置信息。再看看报错提示,人家说我在RelativeLayout中存在循环的相关,就是说的这个了。 不过1.5版本的不报错,这就是后续版本的改进吗?

    02
    领券