AllenZhang 发表于 2013-1-15 18:50:02

free 命令的一些说明

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

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