虚拟机内存使用情况详解

来源:互联网 发布:完美日记化妆品知乎 编辑:程序博客网 时间:2024/05/29 17:16
[root@hadoop1 ~]# free -m
                   total          used           free     shared      buffers     cached
Mem:         15951      15778        172        257          278            6884
-/+ buffers/cache:       8615         7335
Swap:         5983         25       5958
解释:
第一部分Mem行:
total:内存总数 15951M
used:已经使用的内存数 15778m
free:空闲的内存数 172 m
shared:多个进程的共享的内存数 257m
buffers Buffer:缓存内存数 278 m
cached Page:缓存内存数 6884m
关系:total = used+ free
第二部分(-/+ buffers/cache):
(-buffers/cache) used内存数:8615 (指的第一部分Mem行中的used – buffers – cached)
(+buffers/cache) free内存数: 7335 (指的第一部分Mem行中的free + buffers + cached)
-buffers/cache反映的是被程序实实在在吃掉的内存。
+buffers/cache反映的是可以挪用的内存总数。
第三部分是指交换分区:
把磁盘空间当做内存用,也就是windows为什么常常提示虚拟空间不足的原因.,在内存还有大部分的时候,拿出一部分硬盘空间来充当内存.硬盘怎么会快过内存.linux只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了。


对操作系统来讲是Mem的参数-/+ buffers/cached 都是属于被使用,所以它认为free只有172M.
对应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用.


所以,以应用来看看,以(-/+ buffers/cache)的free和used为主.所以我们看这个就好了.Linux为了提高磁盘和内存存取效率, Linux做了很多精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache.前者针对磁盘块的读写,后者针对文件inode的读写.这些Cache能有效缩短了I/O系统调用(比如read,write,getdents)的时间.


手动释放内存方法:

echo 1 > /proc/sys/vm/drop_caches

注解:这样可以释放在buffers 和cached内存使用量,增加free内存