free命令的一些说明



free命令用了很久了,但是知其然有些不知其所以然。今天为了追查一个内存泄漏问题,特意去仔细研究了一下。
一般来说,该命令输出如下:
 
Shell代码  
             total       used       free     shared    buffers     cached  
Mem:       2059500    2042852      16648          0      26708     303484  
-/+ buffers/cache:    1712660     346840  
Swap:      2064376     684460    1379916  
   www.2cto.com  

先解释一下字段:
Total: 总可用物理内存数。linux内核会占去一部分。
Used: 已经使用内存数。更加确切地说,应该是含有数据的内存数。
Free:空余内存数。更加确切地说,是没有数据空的内存数。
Shared: 共享内存数。被多个应用(进程)共享的内存。
Buffers:这个其实是写入用的缓存。这里涉及到linux的I/O策略。 一些数据暂时写入内存中,而不直接写到硬盘上。当做flush操作的时候,再把数据写入硬盘。写入以后,Buffer是可以释放的。因此Buffer其实是一种可以供征集的内存。  www.2cto.com  
Cached: 提供读取操作用的缓存。 依然是涉及到I/O策略。预先读取的数据,如果暂时不使用,就先缓存在内存中供以后读取调用(如果内存有空闲)。Cached也是可以随时释放的。且比Buffer更加容易征集。
由此可知,Cached和Buffered都是可用内存。
因此,真正使用的内存,实质是Used - Cached - Buffers. 
实际可用空余内存是free + Cached + Buffers. 
 
 
 
作者 AllenZhang

相关内容

    暂无相关文章