Android 匿名共享内存 · 深度解析
📚 30 章 · 从入门到内核
01
Android进程间通信(IPC)全景概览
:Binder、Socket、共享内存的对比与选型。
↗
02
什么是匿名共享内存(Ashmem)?
它的核心价值与设计哲学。
↗
03
Ashmem与Linux传统共享内存
(POSIX共享内存、System V共享内存)的异同。
↗
04
Ashmem内核驱动源码分析(一)
:核心数据结构(ashmem_area, ashmem_range)。
↗
05
Ashmem内核驱动源码分析(二)
:关键函数调用链(open, mmap, ioctl, release)。
↗
06
Ashmem内核驱动源码分析(三)
:pin/unpin机制与内存锁定/解锁。
↗
07
Ashmem内核驱动源码分析(四)
:shrinker回调与内存回收策略。
↗
08
Ashmem用户空间接口
:libcutils中的ashmem_create_region等API详解。
↗
09
Ashmem文件描述符的跨进程传递
:结合Binder实现共享。
↗
10
实战案例一
:使用Ashmem实现两个Native进程间的数据共享。
↗
11
实战案例二
:在Android HAL层中使用Ashmem传递图像数据。
↗
12
Ashmem与Android SurfaceFlinger
:GraphicBuffer的共享内存基石。
↗
13
Ashmem与Android MediaServer
:音视频编解码中的内存共享。
↗
14
Ashmem的性能优势
:为什么它比Binder更适合大块数据传输?
↗
15
Ashmem的安全性
:访问控制与内核隔离机制。
↗
16
Ashmem的局限性
:大小限制、生命周期管理与调试难点。
↗
17
Android 11(R)的Ashmem重构
:从驱动到NDK接口的变迁。
↗
18
Android 14(U)的Ashmem现状
:被memfd_create替代了吗?
↗
19
Ashmem与memfd_create的对比
:为什么Google推荐迁移?
↗
20
Ashmem的调试与优化
:使用dumpsys meminfo、strace、systrace。
↗
21
Ashmem常见问题排查
:内存泄漏、文件描述符耗尽、SIGBUS错误。
↗
22
Ashmem在应用框架层的封装
:MemoryFile类的源码分析。
↗
23
MemoryFile的使用示例
:在App中通过MemoryFile共享数据。
↗
24
Ashmem与DirectBuffer
:NIO中的内存共享应用。
↗
25
Ashmem与Android的LMK
(Low Memory Killer):内存压力下的行为。
↗
26
Ashmem与cgroup
:如何限制进程的共享内存使用量。
↗
27
深入理解mmap
:Ashmem背后的虚拟内存映射原理。
↗
28
Ashmem与DMA-BUF
:两种不同粒度的内存共享方案对比。
↗
29
Ashmem的未来演进
:在Android 15+中的角色与替代方案。
↗
30
总结与展望
:构建高性能Android系统时的内存共享选型决策树。
↗