Skip to content
Scroll to top↑

临时调整swap分区大小

构建一些大型项目时经常会遇到collect2: fatal error: ld terminated with signal 9 [Killed]这样的报错,通常是因为可用内存不够。 可以通过临时调整swap分区大小来解决,swap分区为利用磁盘文件做的虚拟内存:

bash
# 创建临时文件夹
mkdir /tmp/swap && cd $_
# 创建swap分区大小,通常设置为内存的两倍左右,这里是32G
dd if=/dev/zero of=swap bs=1024 count=32000000
# 创建swap文件系统
mkswap -f swap
# 启用swap文件
swapon swap
# 查看
free -h

# 卸载swap分区
swapoff swap
# 删除swap文件
rm swap

free -h的输出类似:

           total        used        free      shared  buff/cache   available
内存:       15Gi       1.7Gi        11Gi       377Mi       2.7Gi        13Gi
交换:       34Gi       2.4Gi        32Gi

dd命令用于从一个输入流if转换到输出流of,不提供参数时为标准输入输出。而/dev/zero会无穷尽地提供空字符,常被用来初始化固定大小的数据存储。

创建一个1kb的文件:

bash
dd if /dev/zero of data.txt bs=1k count=1