iOS系统内存与桌面系统内存探索
2018-01-30 本文已影响86人
iOS开发周立贺
为什么桌面系统中很少有应用因为内存过多而被Kill掉,但是iOS会呢?
对于桌面操作系统,是具有丰富的辅存的,我们的操作系统可以使用置换机制(Swap)。比如说,我物理内存紧张了,我就把我现在不用的进程暂时置换到磁盘去,腾出空间给新的进程,这样就相当于使用磁盘来扩展物理内存。
Swap机制
但是对于移动设备(包括苹果、安卓等),无Swap机制,主要是由于移动设备的闪存容量很有限,并且闪存的频繁读写很降低寿命。对于iOS使用的就是Kill掉优先级低的进程。下面一个问题进行详细阐述。
iOS内存管理机制是怎样的?基于什么原则来Kill掉进程呢?
iOS使用的是低内存处理机制Jetsam,这是一个基于优先级队列的机制。

优先级
从上往下,优先级越来越高,看图可以发现,优先级由低到高是:IDLE(空闲)->BACKGROUND->FOREGROUND,依次类推。当内存过低的时候,就会在队列中进行广播,希望大家尽量释放内存,如果一段时间后,仍然内存不够,就会开始Kill进程,直到内存够用。