步骤 1 / 6
为什么不一次分配好
程序申请的内存,很多根本用不到,提前分配是浪费。
程序常常 malloc 一大块“备用”,实际只用一小部分。 Linux 于是只在账本上记下“这段地址归你了”,暂时不给真实内存。 这和前端图片懒加载一样:滚动到了再加载,看不到的就不花流量。
操作系统
Linux 不会提前把内存给足,等程序真正用到时再补上,内存紧张时还可能“超卖”。
以程序 malloc 一大块内存、之后第一次写入为例。
步骤 1 / 6
程序申请的内存,很多根本用不到,提前分配是浪费。
程序常常 malloc 一大块“备用”,实际只用一小部分。 Linux 于是只在账本上记下“这段地址归你了”,暂时不给真实内存。 这和前端图片懒加载一样:滚动到了再加载,看不到的就不花流量。
| 当前状态 | 发生了什么 |
|---|---|
| 用户态 | 内核只记账,不分配真实内存 |