再探 OSX / iOS 的内存管理
原文中文,约9600字,阅读约需23分钟。
📝
内容提要
本文介绍了iOS/OS X内存管理的概念和知识点,包括虚拟内存、页面错误、页面换出和换入、内存抖动、页面列表、清除内存和脏内存、压缩内存、内存分类、内存分配和释放、内存初始化、内存复用、大内存块申请、批量小内存申请和内存懒复制等。
❓
Q&A
虚拟内存的概念是什么?
虚拟内存允许操作系统突破物理内存的限制,为每个进程创建独立的逻辑地址空间,并将其分成大小均匀的内存块,称为页面。
页面错误是如何发生的?
页面错误发生时,虚拟内存系统会产生缺页中断,加载所需数据的页面,并更新页表以允许程序正常访问内存地址。
内存抖动是什么?
内存抖动是由于频繁的内存交换导致的性能下降现象,表现为系统花费过多时间处理缺页中断而不是执行用户进程代码。
如何高效进行内存分配?
可以使用懒加载内存、calloc函数进行内存分配、复用临时内存和选择合适的内存分配方式来提高内存分配的效率。
清除内存和脏内存有什么区别?
清除内存是未被修改的内存页,可以被交换到磁盘;脏内存是被进程修改过的内存页,不能被交换。
如何处理过多的脏内存?
在iOS7之后,引入了Compressed Memory机制,通过压缩未被访问的脏内存页来释放内存空间。
🏷️