摘要: 常见的五种内存泄露: A. 单例造成的内存泄露 B. 非静态内部类创建静态实例造成的内存泄露 C. Handler造成的内存泄露 D. 线程造成的内存泄露 E. WebView造成的内存泄露 F.图片放错资源目录,列表释放时没有释放图片 1.造成内存泄露有哪些? 1.1单例造成的内存泄露 i举例:单 阅读全文
posted @ 2021-01-19 00:24 白一粥 阅读(820) 评论(0) 推荐(0)
摘要: 1.内存泄露介绍 定义:内存中存在已经没有用的对象 表现:内存抖动、可用内存逐渐变少 危害:内存不足、GC频繁、OOM 1.1 Memory Analyzer(mat工具) https://www.eclipse.org/mat/downloads.php 转换:hprof-conv原文件路径 转换 阅读全文
posted @ 2021-01-17 03:25 白一粥 阅读(101) 评论(0) 推荐(0)
摘要: 1.内存抖动介绍 定义:内存频繁分配和回收导致内存不稳定 表现:频繁GC、内存曲线呈锯齿奖 危害:导致卡顿、OOM 1.1 内存抖动导致OOM 频繁创建对象、导致内存不足及碎片(不连续) 不连续的内存片无法被分配,导致OOM 2.内存抖动解决实战 使用Memory Profiler初步排查 使用Me 阅读全文
posted @ 2021-01-17 02:57 白一粥 阅读(599) 评论(0) 推荐(0)
摘要: 1. java内存管理机制 1.1 java内存分配 方法区 虚拟机栈 本地方法栈 堆 程序计数器 1.2 java内存回收算法 1.2.1标记-清除算法 标记出所有需要回收的对象 统一回收所有被标记的对象 缺点: 标记-和清除效率不高 会产生大量不连续的内存碎片,出现内存空洞 1.2.1复制算法 阅读全文
posted @ 2021-01-17 02:23 白一粥 阅读(573) 评论(0) 推荐(0)
摘要: 1 内存优化介绍 内存抖动:锯齿状、GC导致卡顿 内存泄露:可用内存减少、频繁GC 内存溢出:OOM、程序异常 2 优化工具选择 2.1 Memory Profiler(androidstudio下的工具) 实时图表展示应用内存使用量 识别内存泄露、抖动等 提供捕获堆转储、强制GC以及跟踪内存分配的 阅读全文
posted @ 2021-01-17 01:57 白一粥 阅读(99) 评论(0) 推荐(0)
摘要: 1、你做启动优化是怎么做的 分析现状、确认问题 针对性优化 长期保持优化效果 2、是怎么异步的,异步遇到问题没有 体现演讲过程 详细介绍启动器 3、你做了启动优化,觉得有哪些容易忽略的 cpu time 与 wall time 注意延迟初始化的优化 介绍黑科技 4、版本迭代导致的启动变慢有好的解决吗 阅读全文
posted @ 2021-01-17 01:42 白一粥 阅读(71) 评论(0) 推荐(0)
摘要: 1、优化总方针 异步、延迟、懒加载 懒加载:当页面需要到的时候再去加载 技术、业务相结合 2、注意事项 wall time 与cpu time: cpu time才是优化方向 按照systrace 及cpu time跑满cpu 监控的完善 线上监控多阶段时间(App,Activity,生命周期间隔时 阅读全文
posted @ 2021-01-17 01:25 白一粥 阅读(80) 评论(0) 推荐(0)
摘要: 常见初始化痛点 1、可以通过延迟初始化(通过回调)来达到让主线程来少干活,提高性能 ,但是时机不便控制,仍然会对Feed滑动过程有卡顿 2、更优方案:(对上一种方法的升级) 核心思想:对延迟任务进行分批初始化,当空闲时再去初始化 利用IdleHandler特性,消息队列空闲时进行初始化工作。 实现方 阅读全文
posted @ 2021-01-17 01:02 白一粥 阅读(205) 评论(0) 推荐(0)
摘要: 优化小技巧 Theme切换:感觉上的快(实际上是启动的logo页面) 核心思想:子线程分担主线程任务,并行减少时间 阅读全文
posted @ 2021-01-17 00:08 白一粥 阅读(59) 评论(0) 推荐(0)
摘要: 1、AOP介绍 Aspect Oriented Programming,面向切面编程 针对同一类问题的统一处理 无侵入添加代码 1.1AspectJ使用(辅助AOP实现) classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2 阅读全文
posted @ 2021-01-16 20:18 白一粥 阅读(77) 评论(0) 推荐(0)