zoukankan      html  css  js  c++  java
  • 内存优化

    内存优化

    关于内存优化

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

    内存问题:

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

    线上内存监控

    内存优化技巧

  • 相关阅读:
    树莓派摄像头直播程序,非常希望有贡献者一起玩
    Ansible 操作windows
    Python实现自平衡二叉树AVL
    Python非递归遍历多叉树
    Python 非递归遍历图
    使用ffmpeg进行网络直播
    Python安装mysqldb
    运维工程师速成
    科幻小说《霜与火》 by 雷·布雷德伯里
    jvm 内存调整
  • 原文地址:https://www.cnblogs.com/chen-ying/p/12543014.html
Copyright © 2011-2022 走看看