Android:致命异常:java.lang.OutOfMemoryError
Posted
技术标签:
【中文标题】Android:致命异常:java.lang.OutOfMemoryError【英文标题】:Android: Fatal Exception: java.lang.OutOfMemoryError 【发布时间】:2017-01-19 17:08:52 【问题描述】:我知道关于 SO 上的 OutOfMemoryError 还有一百万个其他问题。但我的情况不同。堆栈跟踪中的所有行都不是来自我的代码或我包含的库。整个堆栈跟踪由 android 的标准库组成。
我不知道应该从哪里开始调试。关于如何进一步调试它的任何想法?
Fatal Exception: java.lang.OutOfMemoryError
at android.util.ArrayMap.allocArrays(ArrayMap.java:196)
at android.util.ArrayMap.ensureCapacity(ArrayMap.java:307)
at android.os.Bundle.unparcel(Bundle.java:247)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:1273)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1998)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:709)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5292)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
at dalvik.system.NativeStart.main(NativeStart.java)
【问题讨论】:
您是否在应用中使用了索引大于其大小的数组? 首先在内存不足时获取堆转储。然后检查它并查看您使用内存的对象。找出哪些对象不应该仍然存在,然后修复你的代码,这样它就不会在不应该存在的时候保留引用。 还要检查您是否没有通过内部类泄漏活动或片段。 @dsh - 我在 Fabric 控制台上看到了这个崩溃(顺便说一句,他们今天刚刚被谷歌收购)。而且我无法访问发生崩溃的手机。 如何查明泄露的活动或碎片? Leak Canary 仅指向班级成员,而不是活动本身。 【参考方案1】:android/app/src/main/AndroidManifest.xml
<application
android:largeHeap="true"
添加 largeHeap 可能会解决它
【讨论】:
以上是关于Android:致命异常:java.lang.OutOfMemoryError的主要内容,如果未能解决你的问题,请参考以下文章
android.os.Parcel.createExceptionOrNull 致命异常:java.lang.IllegalArgumentException