内存优化

内存优化

关于内存优化

内存问题很隐蔽,内存问题出现时一个累计的结果。

内存问题:

  • 内存抖动:工具显示锯齿状、GC导致卡顿
  • 内存泄露:可用内存减少、频繁GC
  • 内存溢出:OOM、程序异常

工具选择:

  • Memory Profiler

    实时图表展示应用内存使用量;

    识别内存泄露、抖动等;

    提供捕获堆转储、强制GC以及跟踪内存分配的能力。

    image-20200321210522364

  • Memory Analyzer

    强大的Java Heap分析工具,查找内存泄露以及内存占用。

    生成整体报告、分析问题等。

  • LeakCanary

    自动内存泄露检测的一个库。

Android内存管理机制

  • Java内存管理机制

  • Android的内存管理机制

    • 内存弹性分配,分配值与最大值受具体设备影响。

    • OOM场景:内存真正不足、可用内存不足。

    • Dalvik与Art区别

      Dalvik仅仅固定一种回收算法;

      Art回收算法可以运行期选择,具备内存整理能力,减少内存空洞。

    • Low Memory Killer

      进程分类

      回收收益

内存抖动解决

内存抖动就是内存频繁分配和回收导致内存不稳定。表现为频繁GC、内存曲线呈现锯齿状。会导致卡顿、OOM。

内存泄露解决

内存泄露也会表现出内存抖动、可用内存逐渐变少,引起内存不足、GC频繁、OOM。

可以使用Memory Profiler初步观察,通过Memory Analyzer结合代码确认。

理解MAT

ARTHook检测不合理图片

  • Bitmap内存模型
  • 获取Bitmap占用内存
  • ARTHook:挂钩,将额外的代码勾住原有方法,修改执行逻辑。
  • Epic:是一个虚拟层面,以Java Method为粒度运行时Hook框架。

线上内存监控

内存优化技巧

posted @ 2020-03-21 22:36  甜树果子二号  阅读(233)  评论(0编辑  收藏  举报