Android OOM 排查与解决——图片加载优化

本文阐述分析了 Android 上面 OOM 出现的原因以及一些排查方法。并特别针对图片加载占用内存导致 OOM 的问题,提出了一些解决办法。
摘要由CSDN通过智能技术生成

Android OOM 排查与解决——图片加载优化


1、OOM 引起与表现

        在 Android 这种移动设备上,如果代码没有处理好,很容易引发内存持续占用与泄漏,导致 OOM(OutOfMemoryError) 异常,进而导致 App 程序 Crash 挂掉。

        在 Android 开发中,一个典型的 OOM 异常如下:

        OOM 异常

        一旦碰上了这类错误,我们往往需要去排查内存了。导致 OOM 的一些情况比较常见,大多数情况下,大家可能遇到的都是同一种情况:

  • Activity 泄漏导致;
  • 层次庞大复杂的 View 视图导致;
  • 大量图片持续占用导致;
  • 其他资源持续未释放导致。

2、Android Studio 查看内存占用

        在 Android Studio 里面,我们可以在 Monitors 窗口中,实时对 App 内存进行监控,我们可以看出 App 的 HeapSize已经使用的内存大小剩余内存大小以及峰值变化。有了这些信息,我们可以在某个页面打开和关闭时进行监控,从而对比该页面占用内存变化,可以很方便的定位问题。

        Monitors 查看内存占用

        在这张图中,如果已使用的内存大小(Allocated)接近到 HeapSize 的大小,App 将会处于非常危险的状态中,很有可能下一个操作就会直接导致 OOM,通过 Android Studio,我们可以防患于未然,在 Debug 阶段进行预防。

3、adb 查看内存占用

        adb 工具也是一个非常有用的工具,我们可以通过它来查看 App 内存占用。

3.1、查看 JVM 的 HeapSize 等参数

        通过命令 adb shell getprop dalvik.vm.heapsize 可以直接查看 Dalvik 虚拟机为 App 规定的最大 HeapSize

        getprop dalvik.vm.heapsize

        一般来说,App 可达到的最大 HeapSize 为 dalvik.vm.heapgrowthlimit 所规定的大小。但是如果我们在 AndroidManifest.xml 中为 Application 添加 an

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值