添加swap空间
写在前面
① swap 直译“交换”,Linux系统中常称为“swap分区”
② 类似Windows的“虚拟内存”,当物理内存不足时,拿出部分硬盘空间当“内存”使用,以解决内存容量不足的情况
③ 当某个进程申请内存,但OS发现内存不足时,OS会把内存中不活跃的数据“交换到swap分区中,当OS发现又要用到swap中的数据,而且物理内存还有空余,又会从swap分区拿回来;这两个过程分别叫 swap out和swap in
④ swap也有上限,一旦不够开销,OS会把占内存最多的进程kill掉以释放内存(OOM-Killer机制)
⑤ 虽然swap在装机时已经划分好了,但还是可以添加的
热身
$ swapon -s # 查看当前swap空间(KB)
Filename Type Size Used Priority
/swap file 135164 93720 -1
$ cat /proc/swaps # 或者查看该文件也可以
- 增加的方式有两种:① 使用一个硬盘分区 ② 使用一个文件
只介绍第二种
$ sudo dd if=/dev/zero of=/root/myswapfile bs=1M count=1024
1024+0 records in
1024+0 records out
$ ls -l /root/myswapfile # 可以看到创建了一个文件,大小1GB
-rw-r--r-- 1 root root 1073741824 Oct 23 05:39 /root/myswapfile
$ sudo chmod 600 /root/myswapfile # 修改权限,只root能读写
$ sudo mkswap /root/myswapfile # 把文件设置成swap类型
Setting up swapspace version 1, size = 1073737 kB
$ sudo swapon /root/myswapfile # 设置生效(临时,reboot后失效)
设置永久生效
$ sudo vi /etc/fstab
- 把下面的内容添到文件末尾
/root/myswapfile swap swap defaults 0 0
验证
$ swapon -s
Filename Type Size Used Priority
/swap file 135164 93720 -1
/root/myswapfile file 1048572 39640 -2
可以解决的问题
- git clone 时报错
remote: Couting objects: 9527, done. remote: Compressing objects: 100% (45601/45601), done. fatal: Out of memory, malloc failed (tried to allocate 1752150036 bytes)