内存瘦身 · 实战课堂
📚 30 章 · 从入门到精通
v2.0
01
内存基础概念
VSS/RSS
什么是内存占用 · VSS/RSS/PSS/USS · 内存与性能
02
内存分析工具入门
Profiler
Android Studio Profiler · MAT · dumpsys meminfo
03
内存泄漏原理
GC Roots
可达性分析 · 强/软/弱/虚引用
04
常见泄漏场景(上)
静态变量
静态变量持有Activity · 内部类 · Handler
05
常见泄漏场景(下)
资源未关
Cursor/IO流 · 反注册 · WebView泄漏
06
泄漏检测工具
LeakCanary
LeakCanary原理 · MAT分析hprof
07
Bitmap内存优化
采样压缩
像素格式 · inSampleSize · inBitmap · LruCache
08
图片加载库选型
Glide/Fresco
Glide vs Fresco vs Coil · 缓存策略
09
内存抖动
Memory Churn
什么是抖动 · 识别 · 循环内创建对象
10
内存抖动治理
对象池
Object Pool · StringBuilder · 避免频繁创建
11
数据结构选型
SparseArray
ArrayList vs LinkedList · HashMap vs SparseArray
12
序列化与内存
Parcelable
Serializable vs Parcelable · JSON优化
13
进程模型与内存
LMK
Android进程优先级 · Low Memory Killer · 多进程
14
应用瘦身基础
APK结构
classes.dex · resources.arsc · lib/assets
15
代码瘦身
ProGuard/R8
混淆压缩 · 无用代码 · Kotlin vs Java体积
16
资源瘦身(上)
WebP/SVG
图片压缩 · 移除未使用资源 · Lint
17
资源瘦身(下)
AndResGuard
资源混淆 · 语言按需打包 · 动态下发
18
Native库瘦身
ABI分包
arm64-v8a · 动态下载so · strip优化
19
Dex瘦身
MultiDex
MultiDex原理 · 分包策略 · 重排合并
20
插件化与组件化
RePlugin
插件化内存/体积收益 · 组件化隔离
21
内存监控体系
自定义面板
定时采集PSS · 上报告警策略
22
线上内存排查
Hprof上传
OOM现场保留 · 兜底catch OOM
23
大对象与数组优化
分页加载
避免大数组一次性加载 · Cursor窗口
24
线程与内存
线程栈
线程栈大小 · 线程池复用 · 避免过多线程
25
动画与内存
硬件加速
属性动画 vs 帧动画 · 硬件加速影响
26
数据库与内存
SQLite
SQLite内存优化 · Cursor泄漏 · Room vs GreenDAO
27
WebView内存优化
独立进程
独立进程 · 缓存策略 · 销毁时机
28
内存与性能权衡
时间换空间
时间换空间 · 空间换时间 · 缓存大小取舍
29
系统级内存优化
Android 12+
AIDL限制 · 后台限制 · App Standby Bucket
30
综合实战案例
社交App
从0到1优化内存与包体积 · 全流程复盘