低内存环境编译Node.js遇g++报错:virtual memory exhausted: Cannot allocate memory
解决低内存系统编译Node.js时的内存耗尽问题
针对800MB可用内存系统编译Node.js出现virtual memory exhausted: Cannot allocate memory的问题,给你几个实用的临时解决办法:
临时创建swap分区扩容虚拟内存
系统物理内存不够时,用swap文件补充虚拟内存:# 创建1GB大小的swap文件(可根据需求调整,比如2G就写2G) sudo fallocate -l 1G /swapfile # 设置安全权限,避免其他用户访问 sudo chmod 600 /swapfile # 格式化为swap分区 sudo mkswap /swapfile # 启用swap sudo swapon /swapfile编译完成后,若不需要swap了,可关闭并删除:
sudo swapoff /swapfile sudo rm /swapfile限制编译并发线程数
Node.js默认用和CPU核心数一致的线程编译,会快速耗尽内存。强制用单线程编译能大幅降低内存占用:
先正常执行./configure配置编译参数,再用以下命令编译:make -j1若1线程仍吃力,关掉系统里非必要的后台进程再试。
编译前清理系统缓存
先释放系统缓存内存,给编译腾空间:sudo sync && sudo sysctl -w vm.drop_caches=3该命令会清理页缓存、目录项和inodes,临时释放一部分空闲内存。
内容的提问来源于stack exchange,提问作者Patronics
相关产品推荐
相关产品推荐

