一:背景
启动服务报错,内存不够:commit_memory,希望增加swap内存空间
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x000000077b180000, 543686656, 0) failed; error='Cannot allocate memory' (errno=12)
二:操作过程
1.free -h
查看内存占用情况
可以看到Mem内存还有,Swap内存只有121M
2.Swap新增1G 内存空间
dd if=/dev/zero of=/swap1 bs=1M count=1024
3设置分区文件并激活
设置:mkswap /swap1
激活:swapon /swap1
4查看内存
三:扩展
Mem和Swap的区别
对于memory没什么可说的就是机器的物理内存,读写速度低于cpu一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存的造价是要高于磁盘的,虽然相对来说价格一直在降低。除此之外,内存的断电丢失数据也是一个原因说不能把所有数据和程序都保存在内存中。既然不能全部使用内存,那数据还有程序肯定不可能一直霸占在内存中。当内存没有可用的,就必须要把内存中不经常运行的程序给踢出去。但是踢到哪里去,这时候swap就出现了。swap全称为swap place,即交换区,当内存不够的时候,被踢出的进程被暂时存储到交换区。当需要这条被踢出的进程的时候,就从交换区重新加载到内存,否则它不会主动交换到真实内存中。