• 内存优化


    内存优化

    关于内存优化

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

    内存问题:

    • 内存抖动:工具显示锯齿状、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框架。

    线上内存监控

    内存优化技巧

  • 相关阅读:
    Drupal 学习笔记 (4)
    property和field有什么区别
    Razor4Orchard v1.2
    Mono喜迁新家http://www.xamarin.com/
    jq中获取属性名的方法
    jquery中的文档操作之五
    PHP基础知识之三
    php基础知识之一
    注意点
    jquery中ajax的学习之$.ajax()
  • 原文地址:https://www.cnblogs.com/chen-ying/p/12543014.html
Copyright © 2020-2023  润新知