<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Free</id>
	<title>Free - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Free"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Free&amp;action=history"/>
	<updated>2026-04-23T11:04:10Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=Free&amp;diff=390&amp;oldid=prev</id>
		<title>Evan：​/* 参考 */</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Free&amp;diff=390&amp;oldid=prev"/>
		<updated>2020-02-19T10:26:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;参考&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=free=&lt;br /&gt;
==NAME and DESCRIPTION==&lt;br /&gt;
 free - Display amount of free and used memory in the system&lt;br /&gt;
&lt;br /&gt;
 displays the total amount of free and used physical and swap&lt;br /&gt;
       memory in the system, as well as the buffers and caches  used  by&lt;br /&gt;
       the kernel.&lt;br /&gt;
&lt;br /&gt;
==SYNOPSIS==&lt;br /&gt;
 free [options]&lt;br /&gt;
&lt;br /&gt;
==OPTIONS==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
常用参数为 -m  -g  -h   -s &lt;br /&gt;
&lt;br /&gt;
-b 　以Byte为单位显示内存使用情况。 &lt;br /&gt;
-k 　以KB为单位显示内存使用情况。 &lt;br /&gt;
-m 　以MB为单位显示内存使用情况。&lt;br /&gt;
-g   以GB为单位显示内存使用情况。 &lt;br /&gt;
-o 　不显示缓冲区调节列。 &lt;br /&gt;
-s&amp;lt;间隔秒数&amp;gt; 　持续观察内存使用状况。 &lt;br /&gt;
-t 　显示内存总和列。 &lt;br /&gt;
-V 　显示版本信息。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==EXAMPLES==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
按照离CPU由近到远的顺序依次是CPU寄存器、Cache、内存、硬盘，越靠近CPU的存储器容量越小但访问速度越快&lt;br /&gt;
&lt;br /&gt;
 free -g #可用内存为10G &lt;br /&gt;
             total       used       free     shared    buffers     cached&lt;br /&gt;
Mem:            15         15          0          0          0          9&lt;br /&gt;
-/+ buffers/cache:          5         10(可用内存)&lt;br /&gt;
Swap:            0          0          0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1).free -m  # or free -g &lt;br /&gt;
常用参数为 -m  -g  -h   -s &lt;br /&gt;
#注意 正常情况下free不能太小  不能有swap used 不然一般是有问题的，虽然说少量地使用swap是不是影响到系统性能的 &lt;br /&gt;
[root@vm ~]# free -m &lt;br /&gt;
             total       used       free     shared    buffers     cached&lt;br /&gt;
Mem:           999        256        743          0         21        136&lt;br /&gt;
-/+ buffers/cache:         99        900&lt;br /&gt;
Swap:         2015          0       2015&lt;br /&gt;
&lt;br /&gt;
2). top -&amp;gt;M &lt;br /&gt;
一般就可以看到这些使用内存比较多的程序的 &lt;br /&gt;
如果这两个看到的不多，但是free很少 那就是有问题了 如昨天&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@service]# free&lt;br /&gt;
             total       used       free     shared    buffers     cached&lt;br /&gt;
Mem:      32940112   30841684    2098428          0    4545340   11363424&lt;br /&gt;
-/+ buffers/cache:   14932920   18007192&lt;br /&gt;
Swap:     32764556    1944984   30819572&lt;br /&gt;
&lt;br /&gt;
下面是对这些数值的解释：&lt;br /&gt;
total:总计物理内存的大小。&lt;br /&gt;
used:已使用多大。&lt;br /&gt;
free:可用有多少。&lt;br /&gt;
Shared:多个进程共享的内存总额。&lt;br /&gt;
Buffers/cached:磁盘缓存的大小。&lt;br /&gt;
第三行(-/+ buffers/cached):&lt;br /&gt;
used:已使用多大。&lt;br /&gt;
free:可用有多少。&lt;br /&gt;
第四行是交换分区SWAP的，也就是我们通常所说的虚拟内存。&lt;br /&gt;
区别：第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看，第一行是从OS的角度来看，因为对于OS，buffers/cached 都是属于被使用，所以他的可用内存是2098428KB,已用内存是30841684KB,其中包括，内核（OS）使用+Application(X, oracle,etc)使用的+buffers+cached.&lt;br /&gt;
第三行所指的是从应用程序角度来看，对于应用程序来说，buffers/cached 是等于可用的，因为buffer/cached是为了提高文件读取的性能，当应用程序需在用到内存的时候，buffer/cached会很快地被回收。&lt;br /&gt;
所以从应用程序的角度来说，可用内存=系统free memory+buffers+cached。&lt;br /&gt;
如本机情况的可用内存为：&lt;br /&gt;
18007156=2098428KB+4545340KB+11363424KB&lt;br /&gt;
&lt;br /&gt;
那buffers和cached都是缓存，两者有什么区别呢？&lt;br /&gt;
为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式：Buffer Cache和Page Cache。前者针对磁盘块的读写，后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。&lt;br /&gt;
磁盘的操作有逻辑级（文件系统）和物理级（磁盘块），这两种Cache就是分别缓存逻辑和物理级数据的。&lt;br /&gt;
Page cache实际上是针对文件系统的，是文件的缓存，在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘，这种映射关系由文件系统来完成。当page cache的数据需要刷新时，page cache中的数据交给buffer cache，因为Buffer Cache就是缓存磁盘块的。但是这种处理在2.6版本的内核之后就变的很简单了，没有真正意义上的cache操作。&lt;br /&gt;
Buffer cache是针对磁盘块的缓存，也就是在没有文件系统的情况下，直接对磁盘进行操作的数据会缓存到buffer cache中，例如，文件系统的元数据都会缓存到buffer cache中。&lt;br /&gt;
简单说来，page cache用来缓存文件数据，buffer cache用来缓存磁盘数据。在有文件系统的情况下，对文件操作，那么数据会缓存到page cache，如果直接采用dd等工具对磁盘进行读写，那么数据会缓存到buffer cache。&lt;br /&gt;
所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准.&lt;br /&gt;
如果是应用服务器的话，一般只看第二行，+buffers/cache,即对应用程序来说free的内存太少了，也是该考虑优化程序或加内存了。&lt;br /&gt;
&lt;br /&gt;
aws ec2&lt;br /&gt;
&lt;br /&gt;
[root@ip-172-31-17-165 ~]# free -g &lt;br /&gt;
             total       used       free     shared    buffers     cached&lt;br /&gt;
Mem:             7          4          3          0          0          3&lt;br /&gt;
-/+ buffers/cache:          0          6&lt;br /&gt;
Swap:            0          0          0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=2020=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
第一类单位参数：&lt;br /&gt;
&lt;br /&gt;
1) -b, –bytes， 以Byte为单位显示内存使用情况&lt;br /&gt;
2) -k, –kilo， 以KB为单位， 这也是默认值&lt;br /&gt;
3) -m, –mega， 以MB为单位显示内容使用情况&lt;br /&gt;
4) -g, –giga， 以GB为单位显示内存使用情况&lt;br /&gt;
&lt;br /&gt;
第二类参数：&lt;br /&gt;
&lt;br /&gt;
1)、 -h, –human， 自动将数值转换为人类易读形式&lt;br /&gt;
2)、 -c, –count， 展示结果count次，需与-s配合使用&lt;br /&gt;
3)、 -s, –seconds， 动态刷新内存使用情况的间隔&lt;br /&gt;
&lt;br /&gt;
free -m各字段含义&lt;br /&gt;
第一部分Mem行：&lt;br /&gt;
========================&lt;br /&gt;
total 内存总数: 3865M &lt;br /&gt;
used 已经使用的内存数: 1545M &lt;br /&gt;
free 空闲的内存数: 2320M &lt;br /&gt;
shared 多个进程共享的内存总额 196M &lt;br /&gt;
buffers Buffer 缓存内存数: 176M &lt;br /&gt;
cached Page 缓存内存数:569M &lt;br /&gt;
关系：total (3865M) = used(1545M) + free(2320M)&lt;br /&gt;
第二部分(-/+ buffers/cache):&lt;br /&gt;
========================&lt;br /&gt;
(-buffers/cache) used内存数：798M &lt;br /&gt;
(指的第一部分Mem行中的used – buffers – cached) &lt;br /&gt;
即为1545 – 176 – 569 = 800 取整时计算差异 2M&lt;br /&gt;
&lt;br /&gt;
(+buffers/cache) free内存数: 3066M &lt;br /&gt;
(指的第一部分Mem行中的free + buffers + cached) &lt;br /&gt;
即为2320 + 176 + 569 = 3065 取整时计算差异 1M&lt;br /&gt;
第三部分是指交换分区&lt;br /&gt;
========================&lt;br /&gt;
当系统的物理内存不够用的时候，就需要将物理内存中的一部分空间释放出来，&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=参考=&lt;br /&gt;
[[Linux内存查看及一次释放Linux内存问题处理]] &lt;br /&gt;
&lt;br /&gt;
[http://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html Linux上的free命令详解]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnblogs.com/peida/archive/2012/12/25/2831814.html 每天一个linux命令（45）：free 命令]&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/wisgood/article/details/12979937 Linux 内存 buffer 和 cache 的区别]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/yiyeguzhou100/article/details/78257445 手工drop_caches之后cache值并未减少]&lt;br /&gt;
&lt;br /&gt;
[[category:ops]][[category:linux]]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>