点击上方[全栈开发者社区]右上角[...][设为星标⭐]

1. 通过free命令看Linux内存

  • total:总内存大小。

  • used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。

  • free:空闲的内存大小。

  • shared:进程间共享内存(一般不会用,可以忽略)。

  • buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。

  • cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。

-/+ buffers/cache 看做两部分:

  • -buffers/cache:正在使用的内存大小(注意不是used部分,因为buffers和cached并不是正在使用的,组织和人民需要是它们是可以释放的),其值=used-buffers-cached。

  • +buffers/cache:可用的内存大小(同理也不是free表示的部分),其值=free+buffers+cached。

Swap:硬盘上交换分区的使用大小。

设计的目的就是当上面提到的+buffers/cache表示的可用内存都已使用完,新的读写请求过来后,会把内存中的部分数据写入磁盘,从而把磁盘的部分空间当做虚拟内存来使用。

2. Buffer和Cache介绍

Cache(缓存),为了调高CPU和内存之间数据交换而设计,Buffer(缓冲)为了提高内存和硬盘(或其他I/O设备的数据交换而设计)。

Cache主要是针对读操作设计的,不过Cache概念可能容易混淆,我理解为CPU本身就有Cache,包括一级缓存、二级缓存、三级缓存,我们知道CPU所有的指令操作对接的都是内存,而CPU的处理能力远高于内存速度,所以为了不让CPU资源闲置,Intel等公司在CPU内部集成了一些Cache,但毕竟不能放太多电路在里面,所以这部分Cache并不是很大,主要是用来存放一些常用的指令和常用数据,真正大部分Cache的数据应该是占用内存的空间来缓存请求过的数据,即上面的Cached部分(这部分纯属个人理解,正确与否有待考证)。

Buffer主要是针对写操作设计的,更细的说是针对内存和硬盘之间的写操作来设计的,目的是将写的操作集中起来进行,减少磁盘碎片和硬盘反复寻址过程,提高性能。

在Linux系统内部有一个守护进程会定期清空Buffer中的内容,将其写入硬盘内,当手动执行sync命令时也会触发上述操作。

3. 常见症状

症状一:在Linux中频繁存取文件,物理内存很快用光,而cached一直在增长。

解释:Linux会对每次请求过的数据缓存在cache里,好处就是CPU的处理速度远远高于内存,所以在CPU和内存通讯的时候可以快速从cache中命中结果返回。

症状二:Swap被占用。

解释:内存可能不够了,才会占Swap,所以Swap可以作为服务器监控的一项指标,引起注意。

4. 手动清理Swap和buffers/cache

(1) 清理Swap

swapoff -a && swapon -a

操作说明:如果已经使用了Swap,且当前清空下+buffers/cache还有空间,在执行  swapoff -a操作时,会触发把Swap中的内容交换到内存中,数据不会丢失。

(2) 清理buffers/cache:

sync; sync; sync;&& echo 3 >/proc/sys/vm/drop_caches
sleep 2
echo 0 > /proc/sys/vm/drop_caches

操作说明:

sync-->将缓存的内从写回到硬盘中;

echo 3 >/proc/sys/vm/drop_caches-->修改drop_caches的值为3,默认为0,改为3系统会清理缓存的内容;

sleep 2 --> 等一下,防止上一步没执行完;

echo 0 >/proc/sys/vm/drop_caches --> 改回默认值

5. 总结

通过上面的分析可以知道,当空闲物理内存不多时,不一定表示系统运行状态很差,因为内存的cache及buffer部分可以随时被重用,在某种意义上,这两部分内存也可以看作诗额外的空闲内存。

swap如果被频繁调用,bi,bo长时间不为0,则才是内存资源是否紧张的依据。通过free看资源时,实际主要关注-/+ buffers/cache的值就可以知道内存到底够不够了。

作者:CircleBlog

https://my.oschina.net/circleblog/blog/715711

觉得本文对你有帮助?请分享给更多人关注「全栈开发者社区」加星标,提升全栈技能
本公众号会不定期给大家发福利,包括送书、学习资源等,敬请期待吧!
如果感觉推送内容不错,不妨右下角点个在看转发朋友圈或收藏,感谢支持。
好文章,留言、点赞、在看和分享一条龙吧❤️

Linux下如何用命令查看内存占用情况!(建议收藏)相关推荐

  1. [Linux] Linux下使用du命令查看空间使用情况

    一.摘要 敬告,本文所有博客将迁移到博客园刘好念的博客!!!以后将逐渐弃用CSDN. 本文介绍了在linux下使用du命令查看文件夹所占空间大小的命令,包括查看当磁盘中所有文件占空间大小.前目录的所占 ...

  2. linux 查看 内存 占用,Linux终端:用smem查看内存占用情况

    无论是作为系统管理员,还是作为使用桌面版Linux的简单用户,你都会注意到,某个进程在耗用你系统的所有内存. 首先要明白Linux是如何管理内存的:我多次接到用户的反映,说运行了free命令,就是无法 ...

  3. linux 查看内存消耗情况,Linux终端:用smem查看内存占用情况

    无论是作为系统管理员,还是作为使用桌面版Linux的简单用户,你都会注意到,某个进程在耗用你系统的所有内存. 首先要明白Linux是如何管理内存的:我多次接到用户的反映,说运行了free命令,就是无法 ...

  4. linux下使用free命令查看实际内存占用

    linux下在终端环境下可以使用free命令看到系统实际使用内存的情况,一般用free -m方式查看内存占用情况(兆为单位).而系统实际可用内存是不是free部分呢,不是的,系统实际内存占用以及可用内 ...

  5. linux下使用free命令查看实际内存占用(可用内存)

    linux下在终端环境下可以使用free命令看到系统实际使用内存的情况,一般用free -m方式查看内存占用情况(兆为单位).而系统实际可用内存是不是free部分呢,不是的,系统实际内存占用以及可用内 ...

  6. Window平台下通过cmd命令查看端口占用、查看进程、结束进程

    Window平台下通过cmd命令查看端口占用.查看进程.结束进程 一.概述: (更好的阅读体验,请移步我的个人博客)在学习进程间通讯的时候,我们知道有一种通讯方式叫做socket.对于跨主机之间的进程 ...

  7. 如何查看服务器资源占用情况,云服务器如何查看内存占用情况

    云服务器如何查看内存占用情况 发布时间:2020-05-26 15:28:18 来源:亿速云 阅读:508 作者:栢白 云服务器如何查看内存占用情况?云 我们以 Linux 云服务器为例,介绍几个常用 ...

  8. 什么是内存泄漏?Chrome浏览器中怎么查看内存占用情况?

    JavaScript,会在创建变量(对象,字符串等)时分配内存,并且在不再使用它们时"自动"释放内存,这个自动释放内存的过程称为垃圾回收. 因为自动垃圾回收机制的存在,让大多Jav ...

  9. linux的top命令cpu,在Linux系统下使用top命令查看CPU使用情况

    在Linux系统下,使用top命令查看CPU使用情况. %Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st ...

最新文章

  1. linuxDNS服务器的部署
  2. STL的forward_list链表
  3. redis 双写一致性 看一篇成高手系列 一
  4. scrapy爬虫系列之三--爬取图片保存到本地
  5. 机器学习(五)PCA数据降维
  6. (三)slatstack配置管理
  7. 算法设计分析(44页)
  8. 51nod 1428 活动安排问题 (贪心+优先队列)
  9. Ubuntu16.04下安装、配置Sublime运行环境
  10. 海康IP_Tool修改工具使用教程
  11. android webview 魅族,魅族 Flyme 系统出现大面积应用闪退问题,提供临时解决方法...
  12. 交通信号管理服务器,矿下交通信号控制系统
  13. JS的Date函数Date方法的相关汇总
  14. 好用的识别植物的软件app合集分享,快码住了
  15. android 左右切换对话框 dialog
  16. 多媒体的计算机系统,多媒体计算机系统().PPT
  17. 网站使用手机相机_使用“互通相机”把你的iPhone手机变成Mac的心灵之窗!
  18. 2021移动端图片点击放大,插件swiper使用
  19. 试题 入门训练 Fibonacci数列
  20. 二类电商网页设计_用类设计网页

热门文章

  1. Qt增加QTextEdit右键菜单增加中文翻译
  2. 课表 php源码,php+excel通用课表查询系统 v2.2
  3. c语言水果系统程序设计源代码
  4. 《苍蝇的一分钟生命》动画,YOLO You Only Live Once (你只会活一次)
  5. css520.520,30个纯css3动画代码片段和效果演示合集
  6. “网管师”资格认证简章
  7. 做3D建模的女生多吗?揭露行业比列
  8. 数控,模具,首选广大模具数控学校
  9. 淘身边VS淘宝跳蚤街: 官方和第三方的基情之战
  10. pandas数据的合并与拼接的实现