Android开发 处理内存申请失败的报错(Failed to allocate a 38189038 byte allocation with 16777216 free bytes and 20M
Posted guanxinjing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发 处理内存申请失败的报错(Failed to allocate a 38189038 byte allocation with 16777216 free bytes and 20M相关的知识,希望对你有一定的参考价值。
问题原因
当你在操作图片或者其他大量文件数据时会出现:Failed to allocate a 38189038 byte allocation with 16777216 free bytes and 20MB until OOM 报错.
为什么会出现这个报错?原因很简单.因为一个app的内存只有64MB,而你在操作需要更多内存的文件.这个时候app无法申请到内存就会报这个错误.
解决办法
1.在清单文件中添加 android:largeHeap="true" 属性,将APP的内存从64MB拓展成128MB
<application android:name=".app.App" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="demo" android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" android:largeHeap="true" tools:replace="android:label">
2.尽量减少使用图片图标,用矢量图代替图标图片
3.尽快的释放一些不需要的使用的内存占用
4.保证app没有内存泄漏
以上是关于Android开发 处理内存申请失败的报错(Failed to allocate a 38189038 byte allocation with 16777216 free bytes and 20M的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio的报错提示:Installation via USB is disabled.
005android初级篇之jni 一个简单的报错No implementation found for
安卓开发AS神奇的报错:Cannot find AVD system path. Please define ANDROID_SDK_ROOT
Android NDK 开发NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 使用 addr2line 命令行工具查找动态库中的报错代码位置 )