Centos7 编译过程中遇到 virtual memory exhausted: Cannot allocate memory 问题的解决方案

问题

在编译的时候(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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容