如何 释放linux内存

linux 内存释放机制 升级之后,在查看部分数据库 EM 时候,会发现不时飚高,同时产线也有反馈,在飚高的时候无法生产。在分析 OSWatch 的时候,发现每次飚高的时候,都是内存 Cache 释放,Free 增加的时候,因此研究了 Linux Cache 的释放机制。vm.swappiness : 内核参数用来调整释放匿名缓存的倾向,越大,约倾向于在内存紧张的时候,释放匿名缓存(也就是写入到swap)。vm.dirty_background_ratio : 当脏页占用超过该比例(%)时,后台线程会触发写入,默认 10%。 阅读详情

当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。

一、通常情况

先来说说free命令:

引用

  1. [root@server ~]# free -m  
  2.  
  3. total used free shared buffers cached  
  4.  
  5. Mem: 249 163 86 0 10 94  
  6.  
  7. -/+ buffers/cache: 58 191  
  8.  
  9. Swap: 511 0 511 

其中:

引用

  1. total 内存总数  
  2.  
  3. used 已经使用的内存数  
  4.  
  5. free 空闲的内存数  
  6.  
  7. shared 多个进程共享的内存总额  
  8.  
  9. buffers Buffer Cache和cached Page Cache 磁盘缓存的大小  
  10.  
  11. -buffers/cache 的内存数:used – buffers – cached  
  12.  
  13. +buffers/cache 的内存数:free + buffers + cached  
  14.  
  15. 可用的memory=free memory+buffers+cached。 

有了这个基础后,可以得知,我现在used为163MB,free为86MB,buffer和cached分别为10MB,94MB。

那么我们来看看,如果我执行复制文件,内存会发生什么变化.

引用

  1. [root@server ~]# cp -r /etc ~/test/  
  2.  
  3. [root@server ~]# free -m  
  4.  
  5. total used free shared buffers cached  
  6.  
  7. Mem: 249 244 4 0 8 174  
  8.  
  9. -/+ buffers/cache: 62 187  
  10.  
  11. Swap: 511 0 511 

在我命令执行结束后,used为244MB,free为4MB,buffers为8MB,cached为174MB,天呐,都被cached吃掉了。别紧张,这是为了提高文件读取效率的做法。

为了提高磁盘存取效率,Linux做了一些精心的设计,除了对目录项(dentry)进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

那么有人说过段时间,linux会自动释放掉所用的内存。等待一段时间后,我们使用free再来试试,看看是否有释放?

引用

  1. [root@server test]# free -m  
  2.  
  3. total used free shared buffers cached  
  4.  
  5. Mem: 249 244 5 0 8 174  
  6.  
  7. -/+ buffers/cache: 61 188  
  8.  
  9. Swap: 511 0 511 

似乎没有任何变化。(实际情况下,内存的管理还与Swap有关)

那么我能否手动释放掉这些内存呢?回答是可以的!

二、手动释放缓存

/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。操作如下:

  1. 引用  
  2.  
  3. [root@server test]# cat /proc/sys/vm/drop_caches  
  4.  
  5. 0  
  6.  
  7. 首先,/proc/sys/vm/drop_caches的值,默认为0。  
  8.  
  9. 引用  
  10.  
  11. [root@server test]# sync 

手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)

  1. 引用  
  2.  
  3. [root@server test]# echo 3 > /proc/sys/vm/drop_caches  
  4.  
  5. [root@server test]# cat /proc/sys/vm/drop_caches  
  6.  
  7. 3  
  8.  
  9. 将/proc/sys/vm/drop_caches值设为3  
  10.  
  11. 引用  
  12.  
  13. [root@server test]# free -m  
  14.  
  15. total used free shared buffers cached  
  16.  
  17. Mem: 249 66 182 0 0 11  
  18.  
  19. -/+ buffers/cache: 55 194  
  20.  
  21. Swap: 511 0 511 

再来运行free命令,会发现现在的used为66MB,free为182MB,buffers为0MB,cached为11MB。那么有效的释放了buffer和cache。

◎ 有关/proc/sys/vm/drop_caches的用法在下面进行了说明

  1. 引用  
  2.  
  3. /proc/sys/vm/drop_caches (since Linux 2.6.16)  
  4.  
  5. Writing to this file causes the kernel to drop clean caches,  
  6.  
  7. dentries and inodes from memory, causing that memory to become  
  8.  
  9. free.  
  10.  
  11. To free pagecache, use echo 1 > /proc/sys/vm/drop_caches; to  
  12.  
  13. free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;  
  14.  
  15. to free pagecache, dentries and inodes, use echo 3 > 
  16.  
  17. /proc/sys/vm/drop_caches.  
  18.  
  19. Because this is a non-destructive operation and dirty objects  
  20.  
  21. are not freeable, the user should run sync first. 

    一般情况下,应用在系统上稳定运行了,free值也会保持在一个稳定值的,虽然看上去可能比较小。

    当发生内存不足、应用获取不到可用内存、OOM错误等问题时,还是更应该去分析应用方面的原因,如用户量太大导致内存不足、发生应用内存溢出等情况,否则,清空buffer,强制腾出free的大小,可能只是把问题给暂时屏蔽了。

STM32F103ZE驱动PMW3901光流模块,从SPI配置到数据读取的完整避坑指南 本文详细解析了STM32F103ZE驱动PMW3901光流模块的全过程,从SPI配置、硬件连接到数据读取与处理,提供了完整的避坑指南。重点介绍了SPI参数配置、初始化序列优化、运动数据滤波等关键技巧,帮助开发者快速实现精准的光流检测。 阅读详情

相关推荐

H265/HEVC视频分层码流分析语义元素解释

一、H265概述 H265/HEVC(Hight Efficiency Video Coding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行了详细的分析,本文继续从数据处理的角度对H265/HEVC视频码流进行详细分析。 二、H265分层结构 H265的分层结构与H264类似,分为视频编码层(VCL:Video Code Layer)和网络抽象层(NAL

weixin_43876729的博客 9432

oracle 清除cached,清除Linux缓存

用下面的方法就可以实现清空缓存频繁的文件访问会导致系统的Cache使用量大增首先使用free -m查看剩余内存[root@Oracle ~]# free -mtotal used free shared buffers cachedMem: 3383 331963...

weixin_34503235的博客 1230

SAP中寄售结算规则及要点分析

在做MRKO寄售结算时,系统会根据选定的期间和供应商等条件,将符合条件的寄售消耗或寄售上线的物料凭证找出。然后以供应商为单位。合并产生一张会计凭证。下图显示了通过MRKO结算后自动生成的会计凭证。 那么,在MRKO做寄售结算的规则是什么样的?做为寄售业务处理者的物流和财务需要掌握和了解哪些关于寄售结算的规则和控制逻辑。下面以笔者的经验分析一下: 1、寄售物料在系统中有两种处理方法,一种是通过MB1B 411 K ,通常该操作达到两个目的:将物料从仓库转移到线边库(表示即将要投入生产了)的同时将寄售库

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 8297

linux中free命令查询的total used free shared buff/cache available各自代表的意思以及相关优化

total 总物理内存 used 已经使用的物理内存 free 没有使用过的物理内存 shared多进程共享内存 buff/cache 读写缓存内存,这部分内存是当空闲来用的,当free内存不足时,linux内核会将此内存释放 available还可以被应用程序使用的物理内存 若buff/cache过高而free过低,可用以下命令进行释放优化 echo 1 > /...

cf 1万+

蓝桥杯FPGA赛道积分赛

代码如下: 按键驱动 代码如下 按键驱动 代码如下: 顶层文件 按键驱动 数码管驱动 声明:本代码借鉴网络资料,如有侵权和错误请联系作者删除。我是从寒假开始备赛的,由于我基础不行,备赛过程中也是混混呃呃的,备赛效率不高,总体来说备赛不认真,有点拖拉,但是最后我也坚持备赛到了今天,在备赛过程中,即复习了旧的东西,也学到了新的东西,总结起来还是有点收获的,后天北京、天津、河北地区就要进行省赛了,我会全力以赴,不管结果怎么样,尽力就好,最后祝大家都能

weixin_69804913的博客 1993

Linux系统centos7安装网卡驱动

有时候我们装完Centos或Ubuntu系统会发现没有网卡信息,说明网卡驱动不配置,所以我们要重新安装。 首先去服务器主板官网下载网卡驱动,注意32位和64位。 先查看网卡型号 lspci | grep -i ethernet 我的网卡型号是 00:1f.6 Ethernet controller: Intel Corporation Device 0d55。 网上一找,压根没找到这型号的网卡,别说驱动了。怀着试一试的心态,就安装i219-v系的网卡驱动,还别说,成功了。 针对i21...

wshc18的博客 2万+

内核手动释放内存方法

转载自:http://www.cnblogs.com/waterdragon/archive/2013/03/01/2938289.html Linux释放内存的命令: sync echo 1 > /proc/sys/vm/drop_caches drop_caches的值可以是0-3之间的数字,代表不同的含义: 0:不释放(系统默认值) 1:释放页缓存 2:释放

kjy1228436147的专栏 3201

冒泡排序的并行计算

本人也是并行计算的小白,在这里记录下自己的学习笔记。 今天做了一下冒泡排序的并行计算比较: 串行冒泡排序如下: #include <stdio.h> #include <stdlib.h> #include <windows.h> void BubbleSort(int * pData, int nSize) { if (!pData) { ...

gaoyi的专栏 4492

Linux共享内存异常增长:你真的了解shared吗?

free -g 查看到shared不断增长,但是ipcs -m 又没看到共享内存大对象对长队列

m0_60788247的博客 2573

高效获取Sentinel-2影像:哥白尼数据中心下载全流程解析

本文提供了一份从哥白尼数据中心高效下载Sentinel-2卫星影像的保姆级指南。详细解析了从账号注册、使用Copernicus Browser界面、精准划定研究区域,到利用云量覆盖、时间范围等关键条件筛选L2A地表反射率产品的全流程,旨在帮助用户快速获取高质量遥感数据,避免常见错误。

weixin_29247219的博客 258

从零构建SOEM主站:基于STM32的EtherCAT伺服控制实战指南

本文详细介绍了如何从零构建基于STM32的SOEM主站系统,实现EtherCAT伺服电机的高精度控制。通过硬件选型、SOEM协议栈移植、PDO/SDO配置优化等实战步骤,帮助开发者掌握工业自动化中的关键运动控制技术,特别适用于23位编码器伺服电机的应用场景。

weixin_29186249的博客 666

详解free命令

total:总内存大小。 used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。 free:空闲的内存大小。 shared:进程间共享内存(一般不会用,可以忽略)。 buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。 cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。 -/+ buffers/cache看做两部分: -buffers/cache:正在使用的内存大小(注意不是u...

哦,原来你也在这里。 5344

23、管状剪纸结构的研究与功能生成连杆机构的综合设计

本文研究了管状剪纸结构的压缩运动特性,通过剪纸技术将非刚性可折叠的Yoshimura和Kresling折纸结构转化为刚性可折叠结构,并提出径向可闭合剪纸(RC-kiri)构型。推导了位移与折叠角之间的数学关系,设计了带外部LET接头的RC-kiri模型,建立了力-位移理论模型并通过Abaqus进行有限元验证,制作了3D打印物理模型以测量直径变化。同时,研究了四杆和六杆功能生成连杆机构的综合设计方法,基于负闭合运动链和最小二乘法实现函数生成。结果表明理论、仿真与实验整体吻合良好,误差来源得到分析,为机器人、机

nokia的博客 167

linux释放内存的命令

Linux释放内存的命令:sync echo 1 > /proc/sys/vm/drop_caches drop_caches的值可以是0-3之间的数字,代表不同的含义:0:不释放(系统默认值)1:释放页缓存2:释放dentries和inodes 3:释放所有缓存释放完内存后改回去让系统重新自动分配内存。echo 0 >/proc/sys/vm/drop_caches free -m ...

爷来辣的博客 2万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

linux下内存如何释放,如何释放linux的内存

你们知道怎么释放linux的内存吗?不知道的话跟着学习啦小编一起来学习怎么释放linux的内存。释放linux的内存的步骤Linux下操作频繁时,物理内存会被快速用完,当操作结束后,物理内存没有被正常的释放,而一直当作caching,影响系统的正常运行,今天就来谈谈如何能释放这一部分被占用的内存。1打开Linux命令窗口可使用快捷键Ctrl+Alt+T打开2首先查看一下当前Linux系统内存使用情...

weixin_34560676的博客 6359

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Linux线程释放 内存没释放,Linux下free释放内存死锁有关问题

Linux下free释放内存死锁问题#00x00007f6267789d2binpthread_once()from/lib64/libpthread.so.0#10x00007f626689ec54inbacktrace()from/lib64/libc.so.6#20x00007f626681084bin__libc_message()from/lib...

weixin_39639686的博客 1035

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Linux下如何释放内存

在Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好。但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空间影响性能,此时就需要执行释放内存(清理缓存)的操作了。 Linux系统的缓存机制是相当先进的,他会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作。但是在进行了大量文件操作之后,缓存会把内存资源基本用光。但实际上我们文件操作已经完成,这部分

kang50055的博客 6306

Linux 系统如何释放内存

我们linux服务器的内存经常会因为运行的服务过度而导致内存爆满,此时我们就需要想办法释放初一些内存来减轻服务器压力。

Z2831631429的博客 2320

linux程序释放内存,Linux释放内存方法

最近工作中出现一个问题就是在软件服务运行20多天左右就会将内存耗尽,导致软件无法起来,服务无法进行,只能将软件关闭一段时间后,或者将系统重启,才能运行,而这也不是最终的解决方法,因为运行20多天后,内存会又继续耗尽。目前还在寻找解决思路中,目前的方法是定时清除缓存。因此有了这篇文章。一、free先来说说free命令:# free -m 其中:total 内存总数used 已经使用的内存数free ...

weixin_31865183的博客 2923

如何释放linux的内存

Linux下操作频繁时,物理内存会被快速用完,当操作结束后,物理内存没有被正常的释放,而一直当作caching,影响系统的正常运行,今天就来谈谈如何能释放这一部分被占用的内存。5执行命令结束后,再次查看一下当前Linux系统内存使用情况,发现有70M的内存被cached用了。回车后继续输入命令:echo 3 > /proc/sys/vm/drop_caches。回车后继续输入命令:cat /proc/sys/vm/drop_caches。是将/proc/sys/vm/drop_caches值设为3。...

web17508858916的博客 1万+

linux怎么释放cached中内存,Linux 释放cached内存

使用free -m 查看系统使用的内存情况:# free -mtotal used free shared buffers-/+ buffers/cache: 1629 6242Swap: 8191 16 8175可以看到cached部分的内存占用量高达5G,这部分内存是可以手工释放的,方法如下:To free pagecac...

weixin_39692761的博客 1975

查看linux如何释放内存,linux系统如何释放内存

linux系统如何释放内存发布时间:2008-09-08 17:08:36 作者:佚名 我要评论先看看内存使用状况[root@node1 ~]# free -mtotal used free shared buffers cachedMem: 8004 6557 1446 0 163 5630-/+ buffers/cache: 763 7240Swap: 1983 0 1983把内存里...

weixin_34870207的博客 232

linux 释放内存

linux 释放内存

1万+

linux定时释放内存,定时释放Linux 内存 带释放记录

细心的朋友会注意到,当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题.先来说说free命令[root@server ~]# free -mtotal used free shared buffers c...

weixin_33514277的博客 724

Linux 内存管理与释放

A: 观察特定进程的内存占用是否随时间持续增长,即使在其空闲时也不释放。A: 不会影响程序数据,但可能导致后续磁盘读取变慢,直到缓存重建。(使用Nagios、Zabbix等监控工具)A: Linux会充分利用内存做缓存,只要。(使用cgroups或ulimit)值不低,系统就没有内存压力。(控制交换空间使用频率)创建一个内存释放脚本。

doris8204的博客 1450

linux进程占用内存不会释放,手工释放Linux系统进程占用的内存

总有很多朋友对于Linux的内存管理有疑问,之前一篇linux下的内存管理方式似乎也没能清除大家的疑虑。而在新版核心中,似乎对这个问题提供了新的解决方法,特转出来给大家参考一下。最后,还附上我对这方法的意见,欢迎各位一同讨论。当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的...

weixin_31649177的博客 3481
上一篇: linux 命令随手记(一)
下一篇: Linux I/O performance monitoring utility —— I/O 性能检测软件
小小破铁
博客等级 码龄17年 7粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值