美文网首页
Centos7 编译过程中遇到 virtual memory e

Centos7 编译过程中遇到 virtual memory e

作者: 牍中玉的小木屋 | 来源:发表于2020-03-06 20:00 被阅读0次

    问题

    在编译的时候(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
    

    相关文章

      网友评论

          本文标题:Centos7 编译过程中遇到 virtual memory e

          本文链接:https://www.haomeiwen.com/subject/zzbvrhtx.html