虚拟内存 / 物理内存

Clean Memory

在闪存中有备份,能够再次读取。主要包括system framework、binary executable of your app、memory mapped files

Dirty Memory

所有非Clean Memory,系统无法回收。包括Heap allocation、caches、decompressed images

内存之间的关系
  • 虚拟内存

    virtual memory = clean memory + dirty memory.
    
  • 物理内存

    resident memory= dirty memory+clean memory that loaded in physical memory
    
  • 总结

    virtual memory == (clean memory + dirty memory) > resident memory >dirty memory
    
虚拟内存

首先申请了100兆的虚拟内存,操作系统很懒的,你申请了,但是你只要不用,我就不会给你分配物理内存。后来for循环中,我们进行读写,操作系统就会分配3兆的物理内存,而其他97兆是在虚拟内存。

所以虚拟内存的使用,使得程序不再受物理内存空间的限制,程序的地址不一定在内存上,也可能在辅存上。用户可以为一个巨大的虚拟空间地址编写程序。

桌面系统中很少有应用因为内存过多而被Kill掉
1.对于桌面操作系统,是具有丰富的辅存的,我们的操作系统可以使用置换机制(Swap)。比如说,我物理内存紧张了,我就把我现在不用的进程暂时置换到磁盘去,腾出空间给新的进程,这样就相当于使用磁盘来扩展物理内存。
2.但是对于移动设备(包括苹果、安卓等),无Swap机制,主要是由于移动设备的闪存容量很有限,并且闪存的频繁读写很降低寿命。对于iOS使用的就是Kill掉优先级低的进程。
iOS的Kill机制

iOS使用的是低内存处理机制Jetsam,这是一个基于优先级队列的机制。

你可能感兴趣的:(虚拟内存 / 物理内存)