PS:前天有童鞋问我,为啥我的Linux系统没运行多少程序,显示的可用内存这么少?其实Linux与Win的内存管理不同,会尽量缓存内存以提高读写性能,通常叫做Cache Memory。

在cactiez里看到的如图

Cached memory

有时候你会发现没有什么程序在运行,但是使用top或free命令看到可用内存free项会很少,此时查看系统的 /proc/meminfo 文件,会发现有一项 Cached Memory:

输入cat /proc/meminfo查看:MemTotal: 16425996 kB

MemFree: 5698808 kB

Buffers: 380904 kB

Cached: 9389356 kB

SwapCached: 212 kB

Active: 6569200 kB

Inactive: 3725364 kB

HighTotal: 0 kB

HighFree: 0 kB

LowTotal: 16425996 kB

LowFree: 5698808 kB

SwapTotal: 8273464 kB

SwapFree: 8273252 kB

Dirty: 980 kB

Writeback: 0 kB

AnonPages: 524108 kB

Mapped: 24568 kB

Slab: 381776 kB

PageTables: 7496 kB

NFS_Unstable: 0 kB

Bounce: 0 kB

CommitLimit: 16486460 kB

Committed_AS: 2143856 kB

VmallocTotal: 34359738367 kB

VmallocUsed: 267656 kB

VmallocChunk: 34359469303 kB

HugePages_Total: 0

HugePages_Free: 0

HugePages_Rsvd: 0

Hugepagesize: 2048 kB

free命令里各项内存指标说明:

total used free shared buffers cached

Mem: 16425996 10727220 5698776 0 380904 9389832

-/+ buffers/cache: 956484 15469512

Swap: 8273464 212 8273252

其中第一行用全局角度描述系统使用的内存状况:

total——总物理内存

used——已使用内存,一般情况这个值会比较大,因为这个值包括了cache+应用程序使用的内存

free——完全未被使用的内存

shared——应用程序共享内存

buffers——缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加)

cached——缓存,用于已打开的文件

总结:

total=used+free

used=buffers+cached (maybe add shared also)

第二行描述应用程序的内存使用:

前个值表示-buffers/cache——应用程序使用的内存大小,used减去缓存值

后个值表示+buffers/cache——所有可供应用程序使用的内存大小,free加上缓存值

总结:

-buffers/cache=used-buffers-cached

+buffers/cache=free+buffers+cached

第三行表示swap的使用:

used——已使用

free——未使用

什么是Cache Memory(缓存内存):

当你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。

其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用。如果你希望手动去释放Cache Memory也是有办法的。

如何释放Cache Memory(缓存内存):

用下面的命令可以释放Cache Memory:

To free pagecache:

echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:

echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:

echo 3 > /proc/sys/vm/drop_caches

注意,释放前最好sync一下,防止丢失数据。

总结:个人经验认为没必要手动释放,这种内存管理方式也是比win优胜的地方之一!因为Linux的内核内存管理机制,一般情况下不需要特意去释放已经使用的cache。这些cache起来的内容可以提高文件以及磁盘的读写速度。

linux 内存坏了,Linux的缓存内存 Cache Memory详解相关推荐

  1. 关于Linux的缓存内存 Cache Memory详解

    30 (总结)关于Linux的缓存内存 Cache Memory详解 发表于: Linux, UNIX, 个人日记, 原创总结 | 作者: 谋万世全局者 标签: cache,Linux,Memory, ...

  2. linux系统下安装pip3,linux下安装python3和对应的pip环境教程详解

    linux下安装python3和对应的pip环境教程详解 1.下载python3.6的安装包: 2.解压后,进入到解压目录下,执行如下命令,将python3.6进行编译,如下是将python的环境编译 ...

  3. Linux 高可用(HA)集群之Pacemaker详解

    大纲 说明:本来我不想写这篇博文的,因为前几篇博文都有介绍pacemaker,但是我觉得还是得写一下,试想应该会有博友需要,特别是pacemaker 1.1.8(CentOS 6.4)以后,pacem ...

  4. linux下grep文件内容搜索工具及基本正则表达式详解

    linux下grep文件内容搜索工具及基本正则表达式详解 grep命令: 根据模式(文本字符和基本正则表达式的元字符组合而成之匹配条件)搜索文本, 并将符合模式的文本行显示出来. 格式:grep [选 ...

  5. linux mv复制命令,linux中删除复制移动文件rm,mv,cp命令详解linux操作系统 -电脑资料...

    在linux中对文件的复制删除移动分别会使用到rm,mv,cp三个命令,下面我来给大家介绍一下rm,mv,cp命令对文件的常规操作吧, 先看实例 删除复制移动文件命令 Linux代码 rm -rf / ...

  6. linux中etc下的hosts(本地IP解析)文件详解

    linux中etc下的hosts(本地IP解析)文件详解 1./etc/hosts(本地解析) 很多人一提到更改hostname首先就想到修改/etc/hosts文件, 认为hostname的配置文件 ...

  7. linux中用zip压缩文件,详解Linux中zip压缩和unzip解压缩命令及使用详解

    下面给大家介绍下Linux中zip压缩和unzip解压缩命令详解 1.把/home目录下面的mydata目录压缩为mydata.zip zip -r mydata.zip mydata #压缩myda ...

  8. 【Linux】shell脚本实战-if多分支条件语句详解

    文章目录 前言 多分支语句的语法 多分支语句举例: 1. 出嫁的条件 2. 管理http服务实战脚本 3. 猜数字游戏v1版本-if版本 总结 前言 前面我们已经学习过单分支语句和双分支语句的使用. ...

  9. Linux下zip格式文件的解压缩与压缩操作命令详解

    < Linux下zip格式文件的解压缩与压缩操作命令详解 > * 声明:网上找来比较凌乱,整理了一下,方便自己查看 zip格式文件的解压缩与压缩操作: 1.把/home目录下面的huaza ...

  10. 【Linux】循序渐进学运维-服务篇-FTP服务配置文件详解

    大家好,我是互联网老辛,本文是Linux运维-循序渐进学运维-服务篇的第14篇文章 文章目录 前言 ftp配置文件详解 1. 常见默认配置参数 2. 常见参数的含义 配置文件使用举例 1. 创建本地用 ...

最新文章

  1. sublime text 3 中改变.vue文件的颜色
  2. 3分钟掌握支持向量机-机器学习面试必备
  3. NGUI从入门到实战1.2NGUI的主要特性
  4. V4L2编程 视频采集
  5. 怎么做才能让浏览器看不到token_卫生间回填及防水怎么做才能后患无忧
  6. Web的系统测试方法 (转载)
  7. [转]showModalDialog()、showModelessDialog()方法使用详解
  8. JavaScript -- 时光流逝(三):js中的 String 对象的方法
  9. how is ui5 resource root calculated
  10. 牛客 共鸣问题(思维难题)
  11. 微信公众号支付java_微信公众号支付开发全过程(java版)
  12. 软件测试用例朋友圈发表功能,微信发朋友圈测试用例
  13. ios迅雷php格式,2019最新最全iOS迅雷文件提取方法
  14. 如何看懂财务报表:(一)如何下载财报
  15. showVideo C#版 摄像头驱动程序
  16. Docker 部署 IntelliJ Projector,愉快玩耍 Android Studio、Idea、PyCharm 等 Swing 应用
  17. div背景 css网格背景_如何为背景图像网格创建运动悬停效果
  18. 论文阅读——R树:一种用于空间查找的动态索引结构(算是节译)
  19. 【Python数据科学 | 11】应用实战:我的第一个开源项目-基金定投回测工具
  20. 使用Python 对ENVI SPECTRAL LIBRARY(.sli)进行读取

热门文章

  1. Java程序员们最常犯的10个错误
  2. 老调重弹:对kvo的封装思路
  3. union all关联两个不相关的表,按时间排序
  4. NET对象的XML序列化和反序列化
  5. 第十四章 深度确定性策略梯度(Deep Deterministic Policy Gradient Algorithms,DDPG)-强化学习理论学习与代码实现(强化学习导论第二版)
  6. 智能优化算法:花授粉算法-附代码
  7. 【Tensorflow2.x】设置GPU(内存自增长、指定GPU)
  8. 排序算法2:冒泡排序
  9. ENVI-IDL基础学习(1)
  10. 指向类对象的指针非空但是部分对象成员不存在原因分析