系统学习 Android 的 进程管理、内存管理、音频管理
·
系统学习 Android 的进程管理、内存管理、音频管理
要系统学习 Android 的 进程管理、内存管理、音频管理,需要从 基础理论 到 实际源码分析 层层深入,并结合实践。以下是系统性学习路径和建议:
1. 进程管理(Process Management)
核心概念
- Android 进程生命周期:
ActivityManagerService(AMS)如何管理进程- 进程优先级(
Foreground、Visible、Service、Background、Empty) Low Memory Killer(LMK)机制
- 进程间通信(IPC):
Binder机制(AIDL、Binder驱动)ContentProvider、Broadcast、Socket等其他 IPC 方式
学习资料
- 官方文档:
- 源码分析:
ActivityManagerService.java(frameworks/base/services/core/java/com/android/server/am/)ProcessList.java(进程优先级计算)lmkd(Low Memory Killer Daemon)
- 书籍:
- 《深入理解 Android 内核设计思想》(第 5 章)
- 《Android 系统源代码情景分析》(Binder 部分)
2. 内存管理(Memory Management)
核心概念
- Java 内存模型:
Heap(Young/Old Generation)、GC(Garbage Collection)Memory Leak(内存泄漏)分析与LeakCanary
- Native 内存管理:
malloc/free、mmap、ashmem(匿名共享内存)
- Android 特有机制:
Low Memory Killer(LMK)MemoryFile(共享内存)Memory Profiler(Android Studio 工具)
学习资料
- 官方文档:
- 源码分析:
ActivityManagerService的updateOomAdjLocked()(调整 OOM 优先级)lmkd(system/core/lmkd/)
- 工具:
adb shell dumpsys meminfoAndroid Studio Memory Profiler
- 书籍:
- 《深入理解 Android 虚拟机》(Dalvik/ART 内存管理)
- 《Android 性能优化实战》(内存优化部分)
3. 音频管理(Audio Management)
核心概念
- Audio 架构:
Audio HAL(硬件抽象层)AudioPolicyManager(路由策略)AudioTrack/AudioRecord(播放和录制)
- 音频焦点(Audio Focus):
- 多应用同时播放时的优先级管理
- 音频延迟优化:
AAudio(低延迟 API)FastMixer(高通设备低延迟路径)
学习资料
- 官方文档:
- 源码分析:
AudioService.java(frameworks/base/media/java/android/media/)AudioFlinger(frameworks/av/services/audioflinger/)
- 书籍:
- 《Android 音视频开发》(何俊林)
- 《深入理解 Android 卷 III》(音频系统)
4. 实践方法
- 实验 1(进程管理):
- 写一个
Service,观察adb shell ps和dumpsys activity processes - 通过
kill -9模拟进程被 LMK 杀死
- 写一个
- 实验 2(内存管理):
- 使用
Memory Profiler分析Bitmap泄漏 - 用
NativeMemoryProfiler分析 JNI 内存泄漏
- 使用
- 实验 3(音频管理):
- 实现
AudioTrack播放 PCM 数据 - 测试
Audio Focus抢占机制
- 实现
5. 进阶学习
- 阅读 Linux 内核相关:
cgroups(进程资源控制)mm(Linux 内存管理)
- 学习系统调优:
lmkd调参Low Latency Audio优化
- 参与 AOSP 贡献:
- 在 Android Open Source Project 提交 Patch
总结
| 模块 | 关键点 | 学习方法 |
|---|---|---|
| 进程管理 | AMS、Binder、LMK | 源码分析 + dumpsys 实验 |
| 内存管理 | GC、OOM_ADJ、meminfo | Memory Profiler + 源码 |
| 音频管理 | Audio HAL、AAudio、Audio Focus | 编写音频播放 App + 源码分析 |
建议先从 官方文档 + 源码 入手,再结合 实际项目优化,最终能独立分析 Android 系统级问题。
更多推荐


所有评论(0)