目录
一 虚拟内存的交集
日常应用开发的工作中很少会和虚拟内存打交道。既然要学习和了解一下虚拟内存,先得说说我们和它的交集,不然也不知道学其何用。我们和它的交集主要在两方面:
- 32位APP虚拟内存限制
32位的应用程序的虚拟内存只有4G,在日益复杂的app中很容易达到虚拟内存的瓶颈而导致crash。而64位的虚拟内存几近无限,不会存在这方面的问题(现在市场上绝大多设备都是64位)
- Binder通信的实现机制
虚拟内存的机制实现了操作系统的进程隔离,让每个应用程序都有独立的一块内存。而android的binder机制则是基于此规则实现的
这里我们先只列出交集点,暂不详细展开。
二 物理内存和虚拟内存
1.物理内存
指真实存在的插在主板内存槽上的内存条的容量,在手机系统里可以看到相关信息。我们平时关注的内存使用情况都是应用的物理内存,实际用了多少。
2.虚拟内存
虚拟内存是操作系统内核为了对进程地址空间进行管理( process address space management)而精心设计的一个逻辑意义上的内存空间概念。我们程序中的指针其实都是这个虚拟内存空间中的地址。
虚拟内存模型大致如下(以32位为例):
在上古时代没有虚拟内存概念的时候,我们的程序都是直接在物理上跑的,比如我们的设备物理内存只有80M,这时候程序A运行需要40M,而程序B需要60M,因为设备总共只有80M,那