free命令可以用来查看系统内存使用情况。我一般习惯-m参数以MB的方式查看

  1. [root@localhost ~]# free -m
  2. total used free shared buffers cached
  3. Mem: 1020288 947960 72328 312 82656 647740
  4. -/+ buffers/cache: 217564 802724
  5. Swap: 2097148 466656 1630492

其他参数

  • -b  以Byte为单位显示内存使用情况。
  • -k  以KB为单位显示内存使用情况。
  • -m  以MB为单位显示内存使用情况。
  • -g   以GB为单位显示内存使用情况。
  • -o  不显示缓冲区调节列。
  • -s<间隔秒数>  持续观察内存使用状况。
  • -t  显示内存总和列。
  • -V  显示版本信息。

解释:

  • total:是总的物理内存
  • used:使用中的内存
  • free:完全空闲的内存
  • shared:多个进程共享的内存 
  • buffers:写缓存,在写入磁盘之前,先把数据缓存一段时间,可以释放
  • cache:读缓存,读取过的文件,会缓存一段时间。可以释放
  • -buffers/cache:应用程序实际使用中的内存大小,等于used-buffers-cached(Mem列的三个数)
  • +buffers/cache:可供使用的内存总量,等于free+buffers+cached(Mem列的三个数)
  • Swap:不解释,都能看懂的

所以,可以供程序使用的内存,应该看+buffers/cache(),而不是free。

那明明已经开始使用 swap了,怎么能说内存还充足呢?

照我的理解是,系统在分配内存的时候,如果发现内存不足,会释放一批旧的cache,把空间腾出来给新申请的进程用, 有时候释放不充分或者不及时,于是开始使用到swap了!

手动释放缓存

使用sync命令可以把buffer强制写入硬盘,有时候怕配置没有生效,会使用它强制写到硬盘。如果系统突然断电,buffer的数据没保存,是会丢失的!其实,大多数情况下,占用内存的都是cache,而不是buffer!

下面来说说怎么使用sysctl强制释放缓存,和内存释放相关的内核参数是vm.drop_caches,vm.drop_caches可以设置为0、1、2、3。

说明

0 采取措施之前的默认值

1 释放pagecache

2 释放dentries 和 inodes

3 释放pagecache、dentries和inodes

实际操作可以使用如下的sysctl,也可以使用echo 3 > /proc/sys/vm/drop_caches,效果一样!

  1. [root@localhost ~]# sysctl vm.drop_caches=3
  2. vm.drop_caches = 3
  3. [root@localhost ~]# free -m
  4. total used free shared buffers cached
  5. Mem: 996 88 907 0 0 12
  6. -/+ buffers/cache: 75 920
  7. Swap: 2047 455 1592

不过这个还是会慢慢涨起来的!

linux free 解读相关推荐

  1. linux fstab解读

    fstab这个文件挺有用的. 从左到右: /dev/device mount-point type rules dump fsck 1. /dev/device: 不用说了吧?例如,/dev/hda1 ...

  2. 2022-04-26 linux文件系统解读

    目录 摘要: 文件系统核心抽象概念: 一. super_block 二. inode 三. dentry 文件系统的设计思想: 一. 面向对象 二. VFS 核心操作: sys_open sys_mo ...

  3. Linux命令解读(一):head -n 80 /dev/urandom | tr -dc A-Za-z0-9 | head -c 22

    head -n 80 /dev/urandom | tr -dc A-Za-z0-9 | head -c 22 (该命令是针对: 微信小程序登录 生成 3rd_session 的命令, 官方推荐 3r ...

  4. linux源代码解读,【原创】Linux MM 源代码解读 (1)

    最近转载了不少文章,自己也读了ULK3 MM章节数遍,小有体会.写一些心得,以免自己忘记. 之前一些virtual address到physical address的映射的基本MM机制,可以参看博客转 ...

  5. linux下网口监控软件_超赞的!Aibaba技术官分享高性能Linux服务器解读笔记

    一个运行缓慢的应用程序有时会让人抓狂,此时需要在问题诊断的基础上进行性能调整. 随着虚拟化.云计算时代的来临,Linux得到迅猛发展,在服务器领域已经占据半壁江山,而基于Linux的运维也面临新的挑战 ...

  6. linux——百度百科

    https://baike.baidu.com/item/linux/27050?fr=aladdin linux 编辑 本词条由"科普中国"百科科学词条编写与应用工作项目审核. ...

  7. Windows如何读取Linux,Linux下读取Windows注册表

    原本以为Linux下读取Windows的注册表是个异想天开.无法实现的想法,忽然发现了老外写的一段小文章 http://www.linuxidc.com/Linux/2011-04/34100p2.h ...

  8. 【Linux】Linux内核数据结构:IDR(redix树)

    1. 引言 最近在系统里遇到了IDR结构体,后来看了一下,是内核的一个基础结构. 这个是怎么引入的,引入是为了什么呢? 最早的时候,我们的结构体是一个类似于大结构体套小结构体. struct A {i ...

  9. Linux shell、内核及系统编程精品资料下载汇总 topsage

    shell编程.sed.awk.grep相关: UNIX shell by Example 第四版 UNIX shell范例精解 (第4版) 中文高清PDF下载 Shell脚本学习指南(Classic ...

最新文章

  1. 揭秘三维视觉之结构光原理
  2. 忠告14:神原裕司郎:成功源于积累
  3. 利用HAProxy实现零停机更新维护
  4. 【教程】Cubieboard变苹果无线airplay音响
  5. Tensorflow2.x.x最基础的神经网络(ANN)
  6. AtCoder AGC035D Add and Remove (状压DP)
  7. 实战Jquery(一)--username校验
  8. bracket 教程
  9. css匹配,提高css效率
  10. php接入腾讯云短信SDK
  11. 文档管理,PDF控件PDF-XChange PRO SDK
  12. abb机器人写字程序实例_ABB机器人编程之程序流程指令(含案例)
  13. 阿里巴巴程序员常用的 15 款开发者工具!你知道几个?
  14. 自然风景Mac高清动态壁纸分享来了
  15. “牌面”养成记7:宜家的成功不是靠设计?!
  16. Docker安装部署及使用
  17. 第十九讲 信息安全管理【2021年软考-高级信息系统项目管理师】
  18. 图解Esp32/ESP8266进行组网开发所需了解的那些小概念
  19. 让自己的博客可以在百度上搜索到
  20. 应用决策树算法进行股票财务特征分析

热门文章

  1. [Android初级]可自动切换、无限滑动的广告栏的实现
  2. speedoffice(PPT)怎么给图片添加边框
  3. android端的的网络访问
  4. 「Arm Arch」 虚拟化微架构
  5. 哪个软件可以免费pdf转word?可以pdf转word的软件分享给你
  6. windows10 21H1 访问samba 显示错误的密码 问题解决
  7. 北大青鸟昌平校区:高中学历可以学UI吗?
  8. 一、PX4环境搭建和编译(Ubuntu 16.04、ROS kinetic)
  9. C#中的数据字典Dictionary
  10. SM2259XT主控量产成功,N18 QLC 29F01TDS3AQH1 360G固态开卡