技术经验谈 技术经验谈
首页
  • 最佳实践

    • 抓包
    • 数据库操作
  • ui

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 总纲
  • 整体开发框架
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

hss01248

一号线程序员
首页
  • 最佳实践

    • 抓包
    • 数据库操作
  • ui

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 总纲
  • 整体开发框架
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 最佳实践

  • ui

  • 优化

    • 使用aop进行图片流量监测
    • 内存优化
      • 卡顿
    • aop

    • apm

    • 架构

    • webview

    • rxjava

    • activity-fragment-view的回调和日志
    • Android加密相关
    • Android命令行操作
    • app后台任务
    • kotlin
    • kotlin漫谈
    • kotlin语言导论
    • sentry上传mapping.txt文件
    • so放于远程动态加载方案
    • states
    • Xposed模块开发
    • 一个关于manifest合并的猥琐操作
    • 玩坏android存储
    • 获取本app的安装来源信息
    • Android
    • 优化
    hss01248
    2020-07-31
    目录

    内存优化

    # 内存优化

    # 自动化半自动化监测

    • 大图内存和流量-BitmapCanary,doreamonkit,hook内存分配方法

    • 内存泄露监控和上报-leakcanary,stricmode,as

    • 内存曲线-as,doreamonkit

    • 线程监控

    • # 低内存监控

    # 参考

    深入探索Android内存优化 (opens new window)

    # 总结

    对于内存优化的专项优化而言,我们要着重注意两点,即优化大方向和优化细节。

    对于优化的大方向,我们应该优先去做见效快的地方,主要有以下三部分:

    • 1、内存泄漏
    • 2、内存抖动
    • 3、Bitmap

    对于优化细节,我们应该注意一些系统属性或内存回调的使用等等,如下:

    • 1、LargeHeap属性
    • 2、onTrimMemory
    • 3、使用优化过后的集合:如SparseArray
    • 4、谨慎使用SharedPreference
    • 5、谨慎使用外部库
    • 6、业务架构设计合理

    在本篇文章,我们除了建立了内存的监控闭环这一核心体系之外,还是实现了以下组件:

    • 1、实现了线下的native内存泄漏监控
    • 2、根据设备分级来使用不同的内存和分配回收策略。
    • 3、针对低端机做了功能或图片加载格式的降级处理。
    • 4、针对缓存滥用的问题实现了统一的缓存管理组件。
    • 5、实现了大图监控和重复图片的监控。
    • 6、在前台每隔一定时间去获取当前应用内存占最大内存的比例,当超过设定阈值时则主动释放应用cache。
    • 7、当UI隐藏时释放内存以增加系统缓存应用进程的能力。
    • 8、高效实现了应用全局内的Bitmap监控。
    • 9、实现了全局的线程监控
    • 10、针对内存使用的重度场景实现了GC监控。

    最后,当监控到应用内存超过阈值时,还定制了完善的兜底策略来重启应用进程。

    从性能分类的纬度来看,除了内存监控方面外,是否也同样建立了卡顿、缓存、电量、异常流量、布局、包体积、IO、存储相关的监控与优化体系。总的来说,要想实现更健全的功能、更深层次的定位问题、线上问题快速准确的发现,还是有很多事情可以做的。

    # 工具

    除了常用的内存分析工具Memory Profiler、MAT、LeakCanary之外

    https://github.com/Tencent/matrix/wiki/Matrix-Android-ResourceCanary

    https://github.com/facebookarchive/device-year-class

    LeakInspector-https://www.jianshu.com/p/4646b364ad17 未开源

    https://github.com/smallnew/BitmapCanary

    大图检测: https://www.bookstack.cn/read/DoraemonKit-3.0/05e002158a0d0a66.md

    # 自动化思路

    Leakcanary->stacktrace栈构建exception->上报到统计平台如firebase,友盟,sentry,bugly

    编辑 (opens new window)
    上次更新: 2022/08/25, 20:20:31
    使用aop进行图片流量监测
    卡顿

    ← 使用aop进行图片流量监测 卡顿→

    最近更新
    01
    截图后的自动压缩工具
    12-27
    02
    图片视频文件根据exif批量重命名
    12-27
    03
    chatgpt图片识别描述功能
    02-20
    更多文章>
    Theme by Vdoing | Copyright © 2020-2025 | 粤ICP备20041795号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式