问题
在编译的时候(make),发生了错误
virtual memory exhausted: Cannot allocate memory
make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
本以为是一个很特殊的错误,就上网找了一下解决方案,发现这个问题还挺常见的:是关于内存不足的问题。于是记录了这次解决过程,方便以后回顾。
解决方法
使用 free 查看内存使用情况
- free -m :-m 以字节形式展示
- 解释:
第一行 Mem,表示物理内存统计:
- total 物理内存总量,total = used + free
- used 总计分配给缓存(包含 buffers 与 cache )使用的数量,但其中可能部分缓存并未实际使用
- free 未被分配的内存
- shared 共享内存,一般系统不会用到,总是0
- buffers 系统分配但未被使用的 buffers 数量
- cached 系统分配但未被使用 cache 数量
第二行 -/+ buffers/cache:- used 实际使用的内存,等于第一行的 used + buffers - cached
- free 实际可用内存,等于第一行的 free + buffers + cached
第三行 swap 表示交换分区的使用情况,也就是我们通常所说的虚拟内存- total 总量
- used 使用
- free 空闲
创建 swap
- 在服务器上找一个自己熟悉的位置,用于存放 swap
mkdir /home/images
rm -rf /home/images/swap
dd if=/dev/zero of=/home/images/swap bs=1024 count=2048000
mkswap /home/images/swap
- 启用 swap
swapon /home/images/swap
free -m
开启虚拟内存之后的内存使用情况
- 关闭 swap
swapoff /home/images/swap
rm -rf /home/images/swap
rm -rf /home/images
free -m
网友评论