文档章节

free命令解析

我爱吃葱花
 我爱吃葱花
发布于 2015/11/10 10:48
字数 971
阅读 154
收藏 2
点赞 0
评论 0

以下是笔者在虚拟机上运行的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


本文转载自:

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

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

还是要坚强 ⋅ 04/27 ⋅ 0

Linux上的free命令详解

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

ray2012 ⋅ 2013/02/22 ⋅ 0

Linux Free命令

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

jschiyu ⋅ 2017/05/11 ⋅ 0

linux free命令解析

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

长平狐 ⋅ 2012/09/03 ⋅ 0

Expect 自动化交互应用实例解析

expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。 expect自动交互流程: spawn启动指定进程---expect获取指定关键字---send向指...

super李导 ⋅ 2017/06/01 ⋅ 0

Linux/CentOS 6 free 命令详解

下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如: FO[2][1] = 24677460 FO[3][2] = 10321516 1、交换分区使用情...

TENGQ ⋅ 2017/03/24 ⋅ 0

使用free查看内存占用大的原因解析

使用free/top查看内存占用的时候,发现server总共8G内存,显示free空闲的内存只有800多M,查看了下进程,也没有发现占用大内存的应用。 free结果的解释: 查看结果中used已使用的内存表示总计...

aibati2008 ⋅ 2016/08/02 ⋅ 0

FreeBSD 11.1-RC2 发布,类 Unix 操作系统

FreeBSD 11.1-RC2 发布了。FreeBSD 11.1-RC1 可用于 x86、ARM、PowerPC 和 Sparc64 架构。 更新内容: RPC 中的 double-free 代码已被更正 以 SD 卡为主要驱动器的系统的 gpart 问题已修复 ...

达尔文 ⋅ 2017/07/10 ⋅ 14

Linux服务器的系统内存监控方法详细解析

一、内存使用情况监测 (1)实时监控内存使用情况 在命令行使用“Free”命令可以监控内存使用情况 Mem: 256024 192284 63740 0 10676 101004 -/+ buffers/cache: 80604 175420 Swap: 522072...

红薯 ⋅ 2009/05/07 ⋅ 0

Android系统Recovery工作原理之使用update.zip升级过程分析(八)---解...

Android系统Recovery工作原理之使用update.zip升级过程分析(八)---升级程序update_binary的执行过程 一、update_binary的执行过程分析 上一篇幅中的子进程所执行的程序binary实际上就是upd...

lxp198837 ⋅ 2012/06/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部