文档章节

free命令解析

我爱吃葱花
 我爱吃葱花
发布于 2015/11/10 10:48
字数 971
阅读 169
收藏 2

以下是笔者在虚拟机上运行的debian系统的free情况。该虚拟机内存只有128M,同时分配了256M的SWAP交换区。

           total   used  free shared buffers cached
Mem:       124788 113432 11356  0     15308   75568
-/+ buffers/cache: 22556 102232
Swap: 245752 20 245732

第一行 (可以理解为从操作系统的角度来看内存分配)

total 总物理内存大小。
used 已分配的大小,注意,对操作系统来说任何被使用的内存都是used
free 未被分配的物理内存大小。
shared 共享内存大小,主要用于进程间通信,例如Oracle会使用上GB的共享内存。
buffers 主要用于块设备数据缓冲,例如记录文件系统的metadata(目录、权限等等信息)
cached 主要用于文件内容缓冲

# 文件系统实际上可以粗略的划分为两个部分:

# (1)metadata:即通常说的元数据,包括目录结构、文件的名字、大小、修改时间、权限等等信息。

# (2)filedata:即文件中真正存储的内容

# "缓存"实际上就是在内存中划分一块区域作为硬盘和进程之间的缓冲区域,写进程把数据写到这里然后就干其他事情去了,读进程需要时先在这里找,找不到再去找硬盘,这样就大大提高了读写效率,同时缩短了IO等待时间,否则你在linux上运行man iptables 这样的命令的时候每次都会等N久。。


第二行 (可以理解为从应用程序的角度来看内存分配)

           total   used  free shared buffers cached
Mem:       124788 113432 11356  0     15308   75568
-/+ buffers/cache: 22556 102232
Swap: 245752 20 245732

- buffers/cached = used(第一行) - buffers - cached 实际上是程序当前"真实使用"的"物理内存"的大小。
+buffers/cached = buffers + cached 两个加起来可以理解为"暂时借给"系统作为"缓冲区"使用的内存大小。

从应用多角度来说,实际上系统还可以分配给他的内存有这么多:11356(free) + 15308(buffers) + 75568(cached)= 102232(free)

而系统所拥有的总的物理内存大小 113432 = 22556( - buffers/cached) + 102232 (+ buffers/cached)

那什么时候系统会开始回收buffers和cached部分的内存呢?

这里要看一下数据:

root@debian01:~# cat /proc/meminfo
MemTotal: 124788 kB
MemFree: 11596 kB
Buffers: 15332 kB
Cached: 75568 kB
SwapCached: 20 kB
Active: 54884 kB
Inactive: 45564 kB
Active(anon): 2124 kB
Inactive(anon): 7560 kB
Active(file): 52760 kB
Inactive(file): 38004 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 124788 kB
LowFree: 11596 kB
SwapTotal: 245752 kB
SwapFree: 245732 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 9544 kB
Mapped: 5884 kB
Shmem: 136 kB
Slab: 8784 kB
SReclaimable: 4940 kB
SUnreclaim: 3844 kB
KernelStack: 528 kB
PageTables: 456 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 308144 kB
Committed_AS: 43272 kB
VmallocTotal: 897016 kB
VmallocUsed: 6344 kB
VmallocChunk: 879908 kB
HardwareCorrupted: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 4096 kB
DirectMap4k: 16384 kB
DirectMap4M: 114688 kB

meminfo的数据比较多,这里就不细讲了,我们只关注一个数据。

LowFree: 11596 kB

实际上当free部分的内存小于这个值的时候,系统就会考虑是否需要回收"缓存"部分的物理内存,当然这不是绝对的,这可以作为一个参考阀值。


说了这么多,那么到底有没有办法强制释放呢??


话说办法其实很简单,在控制台执行以下命令即可:

echo 3 > /proc/sys/vm/drop_caches

这里的"3"表示释放所有buffers和cached中能释放的部分。

root@debian01:~# echo 3 > /proc/sys/vm/drop_caches
root@debian01:~# free
          total used free shared buffers cached
Mem: 124788 26764 98024 0 148 6144
-/+ buffers/cache: 20472 104316
Swap: 245752 20 245732

手工释放以后大家可以测试一下,运行几次类似以下这些命令,会明显发现又涨上去了。。。

ls -la /dev/
find / -name *.sh
man iptables
   
root@debian01:~# free
             total used free shared buffers cached
Mem: 124788 87368 37420 0 30692 25512
-/+ buffers/cache: 31164 93624
Swap: 245752 20 245732


本文转载自:

共有 人打赏支持
我爱吃葱花
粉丝 29
博文 129
码字总数 34703
作品 0
海淀
数据库管理员
Linux查看内存使用情况方法

top命令: 输入命令: top 输出内容展示: 内容分析: PID:进程的ID   USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NI:进程Nice值,代表这个进程的优先值 VIRT:进程占用的虚...

还是要坚强
04/27
0
0
Linux 中free命令检查内存使用情况

我们都知道, IT 基础设施方面的大多数服务器(包括世界顶级的超级计算机)都运行在 Linux 平台上,因为和其他操作系统相比, Linux 更加灵活。有的操作系统对于一些微乎其微的改动和补丁更新...

问题终结者
07/06
0
0
linux free命令解析

因为LINUX的内核机制,一般情况下不需要特意去释放已经使用的cache。这些cache起来的内容可以增加文件以及的读写速度。 先说下free命令怎么看内存 [c-sharp] view plaincopy [root@ahsq proc...

长平狐
2012/09/03
53
0
Linux上的free命令详解

解释一下Linux上free命令的输出。   下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如: FO[2][1] = 24677460 ...

ray2012
2013/02/22
0
0
Linux Free命令

解释一下Linux上free命令的输出。   下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如: FO[2][1] = 24677460 ...

jschiyu
2017/05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

创建第一个react项目

sudo npm i -g create-react-app@1.5.2 create-react-app react-app cd react-apprm -rf package-lock.jsonrm -rf node_modules #主要是为了避免报错npm installnpm start......

lilugirl
49分钟前
1
0
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)

Generative Adversarial Network 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development...

naughty
今天
0
0
搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
今天
2
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
3
0
命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部