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框架。

    线上内存监控

    内存优化技巧

  • 相关阅读:
    用Python发生RestFul API POST和GET请求
    C# 8.0中的新功能
    A股数据分析之收集数据:股票列表和股价
    A股数据分析之收集数据:公司详细信息
    VS 2019中修改C#语言版本
    Weak Event Manager
    在WPF中使用MVVM的方式关闭窗口
    C# GDI绘制仪表盘(纯代码实现)
    C#中实现文件拖放打开的方法
    C#设置自定义文件图标实现双击启动
  • 原文地址:https://www.cnblogs.com/chen-ying/p/12543014.html
Copyright © 2011-2022 走看看