池化技术
池化技术 见 [[01-Android/Android Architecture Design/看源码学姿势?/池化技术 池化技术]]
池化技术 见 [[01-Android/Android Architecture Design/看源码学姿势?/池化技术 池化技术]]
图片框架设计 自己设计一个图片框架? 图片加载的轮子有很多了,Universal-Image-Loader, Picasso, Glide, Fresco 等 1、参数 配置需要用到的一些配置信息 (缓存路径、缓存策略、),一般可能通过 Builder 构建者模式来配置参数 2、缓存设计 三级缓存 内存缓存,可用 LruCache 来配置 弱引用缓存 磁盘...
APM 系统设计
Java 中的异常 Java 中有两种异常:已检测异常(Checked exceptions)和未检测异常(Unchecked exceptions)。Checked exceptions 必须使用 throws 或 try catch 进行异常处理;Unchecked exceptions 不需要指定或捕获。Java 对未检测异常默认处理方式是:将堆栈跟踪信息写到 控制台中(或者记录到错...
SVGAPlayer 什么是 SVGA? SVGA 是一种跨平台的开源动画格式,同时兼容 iOS / Android / Web。SVGA 除了使用简单,性能卓越,同时让动画开发分工明确,各自专注各自的领域,大大减少动画交互的沟通成本,提升开发效率。动画设计师专注动画设计,通过工具输出 svga 动画文件,提供给开发工程师在集成 svga player 之后直接使用。 SVGA 原理 ...
内存泄漏 OOM Android 的 Java 程序为什么容易出现 OOM Android 中一个进程对应着一个虚拟机,Android 系统对虚拟机的 vm heapsize 做了限制,当 Java 进程申请的 Java 堆空间超过阈值时,就会 OOM查看进程 headpsize 限制:adb shell getprop,查看 dalvik.vm.heapsize 值 h...
内存泄漏 Memory Leak 内存泄漏定义 本该被回收的对象,因为某些原因(有对象正在持有该应该回收对象的引用)而不能被回收,从继续停留在堆内存中。本质原因:对象 A(持有引用者)的生命周期 > 被引用者(对象 B)的生命周期,从而导致对象 B 需要在生命周期结束时,而无法正确被回收。 检测内存泄漏 检测内存泄漏非常简单,只需要拿到 hprof 文件进行分析就可以知道哪里产...
内存抖动 内存抖动 什么是内存抖动? 是内存抖动是由于短时间内有大量对象进出 Yong Generation 区导致的,它伴随着频繁的 GC。通常发生内存抖动时,在 AS 的 Monitors 可以看到,内存曲线短时间内波动很大。 如何避免内存抖动 尽量避免在循环体内部创建对象,应该把对象创建移到循环体外 注意自定义 View 的 onDraw() 方法会频繁被调用,所以...
内存优化基础 物理内存和虚拟内存 现代操作系统都不直接操作物理内存,而是虚拟内存。App 申请的内存也都是虚拟内存。对于每个 app 来说,在 32 位操作系统,都认为自己的进程独享 2^32 容量的虚拟内存,实际上占用多少物理内存,用的时候再去分配,64 位系统是 2^48,而不是 2^64,因为 256TB 足够大了,用 2^64 会有大量寻址空间浪费。 虚拟内存分为用户空间和内核...
hprof 基础 什么 hprof 文件? hprof 是由 JVM TI Agent HPROF 生成的一种二进制堆转储格式,hprof 文件保存了当前 Java 堆上所有的内存使用信息,能够完整的反映虚拟机当前的内存状态。保存的对象信息和依赖关系是静态分析内存泄漏的关键。 如何抓取 hprof 文件 1. Debug.dumpHprofData(path) 但这个 dump 过...