linux free 命令以及系统内存占用过高的处理方法

[root@localhost ~]# free -mtotal        used        free      shared  buff/cache   available
Mem:           3770         228        3270          11         271        3285
Swap:          8190           0        8190

第一行Mem,表示物理内存统计

total:总内存大小

used:已使用内存大小

free:当前空闲内存大小

shared:多个进程共享的内存总额

buffers/cached:缓存内存数据

第二行-/+ buffers/cache:

(1)used  实际使用的内存,等于第一行的 used - buffers - cached

(2)free  实际可用内存,等于第一行的 free + buffers + cached

内存占用计算公式used/(used+free)

第三行Swap表示交换区的使用情况,也就是我们通常所说的虚拟内存。

free常用参数:

free -b #以Byte为单位显示内存使用情况
free -k #以KB为单位显示内存使用情况,也是默认参数
free -m #以MB为单位显示内存使用情况
free -g #以GB为单位显示内存使用情况
free -s<数字> #间隔数字秒数刷新显示内存使用情况
free -t #显示内存总和列
free -V #显示当前版本

在Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好。但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空间影响性能,此时就需要执行释放内存(清理缓存)的操作了。

Linux系统的缓存机制是相当先进的,他会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作。但是在进行了大量文件操作之后,缓存会把内存资源基本用光。但实际上我们文件操作已经完成,这部分缓存已经用不到了。这个时候,我们难道只能眼睁睁的看着缓存把内存空间占据掉么?

所以,我们还是有必要来手动进行Linux下释放内存的操作,其实也就是释放缓存的操作了。

要达到释放缓存的目的,我们首先需要了解下关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。他的值可以为0~3之间的任意数字,代表着不同的含义:

0 – 不释放
1 – 释放页缓存
2 – 释放dentries和inodes
3 – 释放所有缓存

知道了参数后,我们就可以根据我们的需要,使用下面的指令来进行操作。

首先我们需要使用sync指令,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。

#sync

接下来,我们需要将需要的参数写进/proc/sys/vm/drop_caches文件中,比如我们需要释放所有缓存,就输入下面的命令:

#echo 3 > /proc/sys/vm/drop_caches

此指令输入后会立即生效,可以查询现在的可用内存明显的变多了。

要查询当前缓存释放的参数,可以输入下面的指令:

cat /proc/sys/vm/drop_caches
  1. 清理前内存使用情况
free -m
  1. 开始清理
echo 1 > /proc/sys/vm/drop_caches
  1. 清理后内存使用情况
free -m
  1. 完成
    查看内存条数命令:
dmidecode | grep -A16 "Memory Device$"

linux free 命令以及系统内存占用过高的处理方法相关推荐

  1. windows7系统内存占用过高的解决方法

    电脑的内存空间取决了电脑的运行流畅度,时间一久内存就会爆满导致占用过高这样就会使电脑变得延迟,那么windows7系统内存占用过高怎么办呢?下面就一起来看看windows7系统内存占用过高的解决方法吧 ...

  2. 一个神奇的bug:OOM?优雅终止线程?系统内存占用较高?

    摘要:该项目是DAYU平台的数据开发(DLF),数据开发中一个重要的功能就是ETL(数据清洗).ETL由源端到目的端,中间的业务逻辑一般由用户自己编写的SQL模板实现,velocity是其中涉及的一种 ...

  3. win10内存占用率过高怎么办_win10系统内存占用过高怎么解决

    win10系统内存占用过高怎么解决?很多用户都将电脑内存以4GB为标准配备规格,但是仍然会有用户遇到内存不足的问题,不知如何解决的用户,请来看看下面的介绍吧. 使用电脑的时候,有时会遇到内存占用过高, ...

  4. accdb原有的数据怎么清除_升级ios12之后,苹果手机系统内存占用过高怎么办?...

    之前有不少苹果手机都升级到了最新的ios12.1系统,但是,升级ios12.1之后,一些用户在查看iPhone存储空间的数据时发现,系统占用的内容非常高,有的10几GB,苹果手机系统内存占用过高怎么办 ...

  5. Linux系统内存占用过高排查方法

    以下以Ubuntu系统为例,内存占用过高可能是因为某个进程或程序占用了过多的内存,您可以按照以下步骤进行排查: 以上是一些基本的排查步骤,它们可以帮助您确定内存占用过高的原因,并采取相应的措施解决问题 ...

  6. linux下的buff/cache内存占用过高-手动清除释放内存

    buff/cache内存占用太高 我们在使用free -h或者(top命令)查看系统内存的时候,有时间会发现buff/cache很高,如下图: [root@nfs ~]# free -htotal u ...

  7. 记一次Linux系统内存占用较高得排查

    背景:收到报警,系统的内存使用率触发阈值(部分图是后补的) 1,登陆系统,使用命令查看内存分配 top 按M free -m atop 看下内存分配(cat /proc/meminfo 也可以看到一些 ...

  8. win10内存占用率过高怎么办_DNF:WIN10玩DNF卡顿,内存占用过高的解决方法

    无论你是喜欢正经的职业百科还是搞笑的DNF趣事,点点关注不迷路 小编会努力继续给大家带来干货满满的文章,您的关注和收藏是最大的支持~ 各位勇士新年快乐,今天是初二了,祝大家玩的开心. 今天给大家分享一 ...

  9. 电脑开机内存占用过高的解决方法

    以win11为例: 打开电脑控制面板->硬件和声音->电源选项->选择电源按钮的功能(左边第二行)-> 点击更改当前不可用的设置->取消启用快速启动选项->保存修改 ...

最新文章

  1. 一般熟练盲打需要多久_进口攻略!一般货物进口清关需要多久?如何有效提高清关效率?...
  2. i2c的时钟延展问题
  3. python画散点图程序实例_【112】用python画散点图和直线图的小例子
  4. MySQL表名不区分大小写的设置方法
  5. boost的chrono模块explore limits探索极限的测试程序
  6. linux下网络监听与发送数据包的方法(即libpcap、libnet两种类库的使用方法)
  7. JavaScript——创建运动框架
  8. oracle 11g空表不能exp导出问题解决方案
  9. 图像数集据增广的15+种功能总结和Python代码实现
  10. Java岗招聘标准水涨船高,五年Java程序员表示面试太难了
  11. Office在线协作(三)- O2OA连接本地部署的OnlyOffice Docs Server服务器 For Windows Server
  12. 语法分析器-LL(1)语法分析
  13. UWB定位系统部署原则
  14. 离散数学 —— 代数系统(二元运算、封闭性、结合律、幺元、零元、逆元、半群、独异点、群、子群、循环群、置换群、陪集)
  15. matlab的foramt
  16. RL(Chapter 3): Finite Markov Decision Processes (有限马尔可夫决策过程)
  17. 程序员的12条经营分享
  18. tensorflow-tf基础
  19. 求职经历--ThoughtWorks
  20. 美的美少年暑期实习面经

热门文章

  1. 安徽医科大学计算机二级证书,安徽医科大学临床医学专业顺利通过教育部认证...
  2. Python学习-8.2 库(第三方库介绍与下载安装)
  3. 在物理机上安装centos系统
  4. 阿里物联网平台(一)Windows系统+VS2017 模拟设备端接入
  5. 北大青鸟:这5个IT互联网方向,值得考虑!
  6. BMD UltraStudio 4K Extreme 3采集卡
  7. 数据生命周期 - 分区
  8. vue网页 PC端和移动端兼容方案
  9. 机器人示教编程与离线编程的优缺点对比
  10. nvme命令中prp_蛋蛋读NVMe之三