http://www.linuxeye.com/Linux/1932.html
linux的内存分为:物理内存和虚拟内存。
物理内存就是系统硬件提供的内存大小,是真正的内存。
虚拟内存:虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。
使用场景:物理内存不足,linux内核将暂时不用的内存数据写入交换空间,则物理内存得到释放;当需要用到那些数据时,则从交换空间读入物理内存。
常用内存监控命令:top free
free
total: 物理内存总大小
used:已经使用的物理内存大小
free:空闲的物理内存大小
shared:多个进程共享的内存大小
buffers/cached:磁盘缓存的大小
Men:代表物理内存使用情况
buffers/cache:代表磁盘缓存使用情况
swap:代表交换空间使用情况。
从内核的角度看内存的状态:
物理内存大小7820M,空闲内存大小824M。已经使用的内存为7820-824=6996M。可用内存824并不包含buffers和cached。
内核完全控制着内存的使用情况,Linux会在需要内存的时候,或在系统运行逐步推进时,将buffers和cached状态的内存变为free状态的内存,以供系统使用。
从应用层的角度看内存的状态:
已经使用4093M,可用空间大小3727M。3727=190+2712+824
应用程序可用的物理内存值是Mem项的free值加上buffers和cached值之和,也就是说,这个free值是包括buffers和cached项大小的,对于应用程序来说,buffers/cached占有的内存是可用的,因为buffers/cached是为了提高文件读取的性能,当应用程序需要用到内存的时候,buffers/cached会很快地被回收,以供应用程序使用。
为了降低磁盘读取数据对时间和资源的消耗,linux引入了buffer/cache机制
buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件属性信息,这样当操作系统需要读取某些文件时,会首先在buffers 与cached内存区查找,如果找到,直接读出传送给应用程序,如果没有找到需要数据,才从磁盘读取,这就是操作系统的缓存机制,通过缓存,大大提高了操 作系统的性能。但buffers与cached缓冲的内容却是不同的
buffers主要用来存放目录里面有什么内容,文件的属性以及权限等等。而cached直接用来记忆我们打开过的文件和程序。