详解SWAP分区
这里来介绍一下Linux下的一个内存管理机制:SWAP分区
首先来介绍一下什么是SWAP分区:
SWAP分区是指,当内存中没有可用内存时,操作系统会把一些不常用的内存拿出来,放到可用内存池当中,除此之外,操作系统还会把一些在内存中,进程不常用内存拿出来放到内存池当中,且把这些数据存放到磁盘的SWAP分区中,当下次要用时则将内存拿回来,并从SWAP从读取数据存放进去,然后返回进程!
但是缺点是在SWAP分区爆满的情况下会造成不稳定,列如:
当内存爆满时候,A进程需要一个1024字节的内存,此时B进程里刚好有1024个字节的内存不常用,那么此时操作系统会把这一部分内存里的数据存放到SWAP中,然后将其分配给A进程时候,但是倘若此时SWAP分区是爆满的情况下,就会出现无法分配的情况,这种情况下就会从磁盘中划分内存!
其次,倘若已经交换完成了,并且刚好交换完成之后,SWAP内存爆满了,此时,B进程需要那块内存,A进程需要保存这块内存的数据,那么此时SWAP分区爆满之后就没有办法将进程中的数据存放进去,所以此时A进程的数据则丢失,B进程数据恢复,所以会导致不稳定的情况!
SWAP存储在磁盘中,是Linux 下特有的机制,在安装操作系统时就已经设定好了,想要修改可以通过SWAP配置文件进行修改!
#mkswap /home/swap Setting up swapspace version 1, size = 1023996 KiB
设置新的swap文件
# swapon /home/swap
如果你的电脑上没有swap文件或size=0,则swap服务linux会视为无效!
swap分区越大,磁盘的可用内存就越小!因为linux要划分一块区域用来存储swap分区!
注意windows上没有此服务,windows是直接使用虚拟内存,虚拟内存不够用从磁盘里划分!
上一篇: JAVA并发编程(二):理解CAS机制
下一篇: Java并发编程之CAS