问题描述
在编译安装一个linux服务的过程中出现如下错误,初步分析可能是开发板上面的内存不足造成的。
virtual memory exhausted: Cannot allocate memory
解决方案:
我们知道linux中有一个交换分区,而交换分区也属于虚拟分区的一种。我们就可以用这种方式来解决上述问题。操作步骤如下:
#建立一个512M的交换分区文件
dd if=/dev/zero of=/root/swap bs=512 count=1M
#使用mkswap工具将上述文件格式化成交换分区文件
mkswap /root/swap
#启动交换分区使之生效
swapon /root/swap
#如果要每次都生效,那么需要将配置信息写入到磁盘管理文件中
echo "/swap/root/swap swap swap defaults 0 0" >> /etc/fstab
#然后重新启动板子
reboot
#开启虚拟分区的功能
swapon /root/swap
其实我们也可以将上述的操作写成一个shell脚本进行一键配置运行。比如:my_swap_config.sh
#!/bin/bash
dd if=/dev/zero of=/root/swap bs=512 count=1M
mkswap /root/swap
swapon /root/swap
echo "/swap/root/swap swap swap defaults 0 0" >> /etc/fstab
reboot
最后可以使用free -lh命令查看一下是否存在。此处为演示,具体大小以磁盘空间而定。
总结
以上就是解决在嵌入式板子上一些资源比如内存不足的处理方法。