美文网首页
Android内存优化总结--内存泄漏与OOM

Android内存优化总结--内存泄漏与OOM

作者: 码农ing | 来源:发表于2021-05-30 22:23 被阅读0次

记录分享一下周末的学习总结---Android内存优化,总结后续还会完善补充。


内存优化分为:一个本质和三个知识点

本质:对象的引用未被释放,导致对象本身无法被有效的回收。

三个知识点:内存泄漏、内存溢出、内存优化工具

【内存泄漏】

1.单例模式引发的内存泄漏:

原因:单例模式里的静态实例持有对象的引用,导致对象无法被回收,常见为持有Activity的引用

优化:改为持有Application的引用,或者不持有使用的时候传递。

2.集合操作不当引发的内存泄漏:

原因:集合只增不减

优化:有对应的删除或卸载操作

3.线程的操作不当引发的内存泄漏:

原因:线程持有对象的引用在后台执行,与对象的生命周期不一致

优化:静态实例+弱引用(Weakrefrence)方式,使其生命周期一致

4.匿名内部类/非静态内部类操作不当引发的内存泄漏:

原因:内部类持有对象引用,导致无法释放,比如各种回调

优化:保持生命周期一致,改为静态实例+对象的弱引用方式(WeakReference)

5.常用的资源未关闭回收引发的内存泄漏:

原因:BraodcastReceiver,File,Cursor,IO流,Bitmap等资源使用未关闭

优化:使用后有对应的关闭和卸载机制

6.Handler使用不当造成的内存泄漏:

原因:Handler持有Activity的引用,其发送的Message中持有Handler的引用,当队列处理Message的时间过长会导致Handler无法被回收

优化:静态实例+弱引用(Weakrefrence)方式

销毁对象时候清空队列里的Message

【内存溢出】

原因:

1.内存泄漏长时间的积累

2.业务操作使用超大内存

优化:

1.调整图像大小后再放入内存、及时回收

2.不要过多的创建静态变量

【优化工具】

LeakCanary(Activity内存泄漏)

Profiler(内存泄漏、内存抖动、应用卡顿等)

相关文章

  • 面试

    Android 面试要点 2.13更新 内存优化 什么是oom,如何避免? 如何内存控制,内存优化内存泄漏会导致内...

  • Android内存优化总结--内存泄漏与OOM

    记录分享一下周末的学习总结---Android内存优化,总结后续还会完善补充。 内存优化分为:一个本质和三个知识点...

  • Android性能优化—布局优化技巧

    前面几篇文章在前面几篇文章当中, Android 内存泄漏和OOM分析(一) Android 内存泄漏和OOM分析...

  • 性能优化与保活

    ------内存泄漏优化------Android 内存优化你的 Handler 内存泄露 了吗?Android卡...

  • Android性能优化

    1.Android性能优化-内存泄漏(上) 2.Android性能优化-内存泄漏(下) 3.Android性能优化...

  • 【android】Android内存优化之OOM

    Android内存优化之OOM Android的内存优化是性能优化中很重要的一部分,而避免OOM又是内存优化中比较...

  • Android 优化

    Android 内存优化内存溢出 , 内存泄漏 , 内存泄漏过多就导致内存溢出 Android 系统垃圾回收机制内...

  • android 内存泄漏总结

    android 内存泄漏总结 前言 内存泄漏很危险。轻则卡顿,重则oom。这种东西写代码的时候注意一下就能避免90...

  • Android性能优化之内存篇

    android的内存优化一般从以下几个方面考虑: 内存泄漏 内存抖动 Bitmap 代码质量优化 内存泄漏 内存泄...

  • Android性能优化篇之内存优化--内存泄漏

    引言 1. Android性能优化篇之内存优化--内存泄漏 2.Android性能优化篇之内存优化--内存优化分析...

网友评论

      本文标题:Android内存优化总结--内存泄漏与OOM

      本文链接:https://www.haomeiwen.com/subject/vggmsltx.html