最近在弄Jetson TX2上边的ORB Slam,经常见到加载词库就内存不够,然后程序退出了。系统有8G内存,系统启动后只有3G左右可以用,这内存能搞啥呀。偶尔想起来不是有个swap分区吗?
用free -m查看了一下,竟然没有swap?于是网上搜索了一个添加swap文件的方法,新版本的kernel支持swap文件,目的在于不同的操作系统都可以使用这个文件,而不像以前的只能让ubuntu使用swap分区,双系统的时候,window没法使用这个分区浪费空间。
添加swap:
1) 创建swap文件:
dd if=/dev/zero of=/aibrain/swapfile bs=1024 count=4096000
2) 格式化:
mkswap /aibrain/swapfile
3) 加载swap文件:
swapon /aibrain/swapfile
为了使每次启动都自动加载,修改/etc/fstab:
/aibrain/swapfile swap swap defaults 0 0
free -m查看如下:
aibrain@aibrain-desktop:~$ free -m
total used free shared buff/cache available
Mem: 7852 1725 5404 65 721 5940
Swap: 32767 0 32767
一般这样就说明已经能使用swap文件了,但是我还是不放心呀。因为没见到有使用呀。于是故意写了一个程序,malloc了30G的内存,并且memset。(不memset的话,看不见效果)然后就能看见swap被使用了。
aibrain@aibrain-desktop:~$ free -m
total used free shared buff/cache available
Mem: 7852 1725 5404 65 721 5940
Swap: 32767 910 31857
OK,说明swap文件已经被使用了。