编译出现virtual memory exhausted:无法分配内存的解决
问题产生
- 今天打算尝试一下编译源码,结果在编译的过程出现了如下错误:
问题解决
- 问题出在虚拟内存不足上面
1. 查看当前内存大小
2. 创建swap文件1
dd if=/dev/zero of=/var/swap bs=1024 count=1024000
- 解析说明
参数 说明 if input file of output file bs 以bytes写入
3. 建立swap
1. 语法
mkswap [-c] [-f] [-p PSZ] [-L label] [-U uuid] device [size]
参数device通常是一个磁盘分区(类似于/dev/sdb7),但也可以是一个文件。Linux内核不查看分区ID,但是许多安装脚本将假定十六进制类型82(Linux_SWAP)的分区是交换分区。(警告:Solaris也使用此类型。小心不要关闭Solaris分区。)
2. 选项列表
| 选项 | 说明 |
| :--------| :--- |
| -c | 创建交换分区之前,检测坏块。如果有,那么打印出数量。 |
| -f | 强制执行。如果没有此选项,mkswap将拒绝擦除带有分区表的设备上的第一个块或整个磁盘上的第一个块(例如/dec/sda) |
| -p | 设置页大小,默认4096。一般是不需要指定这个参数的 |
| -L label | 指定一个label,方便swapon使用。只适用于新的风格交换区域 |
| -v1 |创建v1版本的swap分区,2.5内核之后只支持这种的 |
| -U uuid | 指定uuid,默认情况会生成uuid |
5. 启动swap
swapon /var/swap
#### 6.
注意: of=<swapfile>,将<swapfile>替换成你想创建swap文件的位置,最后一项是swap文件的名字。 ↩︎