1.Buddy内存管理算法
内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;
外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。
目的:努力让内存分配与相邻内存合并能够快速进行。解决外部碎片问题,效率高(二进制)。
原则:向上取整为2的幂大小。
伙伴系统:“伙伴”指的内存的”伙伴“,一片连续内存的伙伴是相邻的另一片一样大小的连续内存。
算法:创建一系列的空闲块链表,每个链表都是2的幂大小。
分配内存
回收内存
2.Linux交换空间
交换空间(Swap) 是磁盘的一个分区,Linux物理内存满时,会把一些内存交换到Swap空间,Swap空间是初始化系统时配置的。
作用:
冷启动内存依赖:一些大型程序在启动时会用到大量的内存空间,但后续就不怎么用,所以可以将后续不怎么使用的部分放入Swap。
系统睡眠依赖:当Linux睡眠时会把系统所有的内存数据放入Swap里。
大进程空间依赖:物理内存确实不够时用到
交换空间与虚拟内存的区别: