再探 OSX / iOS 的内存管理
💡
原文中文,约9600字,阅读约需23分钟。
📝
内容提要
本文介绍了iOS/OS X内存管理的概念和知识点,包括虚拟内存、页面错误、页面换出和换入、内存抖动、页面列表、清除内存和脏内存、压缩内存、内存分类、内存分配和释放、内存初始化、内存复用、大内存块申请、批量小内存申请和内存懒复制等。
🎯
关键要点
- 本文介绍了iOS/OS X内存管理的概念和知识点。
- 虚拟内存允许操作系统突破物理内存的限制,为每个进程创建独立的逻辑地址空间。
- 页面错误发生时,虚拟内存系统会产生缺页中断,加载所需数据的页面。
- OS X中,虚拟内存系统将页面写入备份存储区,页面换出和换入的过程被描述。
- 内存抖动是由于频繁的内存交换导致的性能下降现象。
- 操作系统内核维护三个物理内存页面列表:Active List、Inactive List和Free List。
- 内存分类包括清除内存(Clean Memory)和脏内存(Dirty Memory)。
- Compressed Memory机制在iOS7之后引入,用于处理过多的脏内存。
- 懒加载内存可以推迟内存分配,减少启动时间。
- 使用calloc函数分配内存比使用malloc和memset更高效。
- 复用临时内存可以提高性能,避免频繁申请内存。
- 申请大内存块时建议使用vm_allocate,申请小内存块时使用malloc。
- 批量小内存申请使用malloc_zone_batch_malloc函数更高效。
- 内存懒复制使用vm_copy函数,只有在需要时才进行实际的内存复制。
➡️