Linux系统手工释放内存缓存的方法教程

在Linux操作系统中,我们一般不需要去释放内存,因为系统已经将内存管理的很好。但是凡事也有例外,比如:1)当内存被缓存占用掉,导致系统使用SWAP空间并最终影响了系统性能;2)有些环境上部署了监控软件用于检测内存使用率的,那么当内存使用率达到一定上限(例如:80%)时,就会报警。因此在这些场景中,就需要执行释放内存(清理缓存)的操作了。

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

下面我们来看一个实际测试:

先看看内存使用状况

[root@node1 ~]# free -m
total used free shared buffers cached
Mem: 8004 6557 1446 0 163 5630
-/+ buffers/cache: 763 7240
Swap: 1983 0 1983

把内存里的数据暂时写到硬盘里

[root@node1 ~]# sync

修改/proc/sys/vm/drop_caches文件

[root@node1 ~]# echo 3 > /proc/sys/vm/drop_caches
[root@node1 ~]# cat /proc/sys/vm/drop_caches

再看内存,终于释放出来了。

[root@node1 ~]# free -m
total used free shared buffers cached
Mem: 8004 631 7372 0 0 60
-/+ buffers/cache: 570 7433
Swap: 1983 0 1983

时间: 2024-09-20 14:48:27

Linux系统手工释放内存缓存的方法教程的相关文章

Mac OS X/Linux系统下清除DNS缓存命令整理_unix linux

Mac OS X/Linux系统下怎么清除DNS缓存呢?在不同的系统中刷新DNS缓存的方法如下: Mac OS X 系统,终端输入: sudo dscacheutil -flushcache Linux系统,终端输入: /etc/init.d/nscd restart Windows 系统,CMD 命令行窗口输入: ipconfig /flushdns 查看

php内存缓存实现方法_php技巧

本文实例讲述了php内存缓存实现方法.分享给大家供大家参考.具体如下: 在php中缓存分为很多种类型如,内存缓存,文件缓存,页面缓存.本文要来讲述关于php中内存缓存的一些方法,这里我们将介绍Memcached缓存和php自带的APC缓存方法. 1.Memcached缓存. memcached是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度,memcached 使用了"Key=>Value"方式组织数据,可以允许不同主机上的多

Win8系统查看应用程序大小的方法教程

  通常情况下,用户想要查看某一个应用程序的大小,我们会通过右键程序图标,通过属性来查看应用程序所占系统磁盘大小,但是在很多用户想查看多个应用程序大小适要怎么办呢?其实在win8系统下是能够同时查看多个应用程序大小的,下面看小编小编为您带来的查看方法! Win8系统查看应用程序大小的方法教程 1.首先利用屏幕右边的Charm栏来到入"更改电脑设置",在里面点击选择"常规"; 2.接着在"常规"里面找到"可用存储"选项,这时候就

解决win7系统无法进入操作中心的方法教程

  Windows操作中心是一个查看警报和执行操作的中心位置,它可帮助保持 Windows 稳定运行,不过在win7系统下,windows操作中心貌似很少用户会进入查看,不过不能因为我们不经常使用而对其不理不睬,近期有部分使用win7系统的用户向小编反映,在即的windows操作中心无法打开,对于出现该问题的用户我们应该如何解决呢?下面看小编为大家带来的解决方法! 解决win7系统无法进入操作中心的方法教程 1.首先,我们同时按下win7电脑键盘上的win+R快捷键打开电脑的运行窗口,在打开的运

解决win7系统所有中文显示乱码的方法教程

  在win7系统下我们如果把语言操作系统界面语言修改为英文后,有部分用户的电脑中的英文字体将显示乱码的问题,对于出现该问题是因为中文不是Unicode语言,用户在将系统语言设置为英文后,语言设置的非Unicode设置出问题而导致的,故此我们需要将非Unicode的语言修改为中文语言即可解决这个问题,下面我们看下具体的操作教程吧! 解决win7系统所有中文显示乱码的方法教程 1.点击开始菜单图标并单击打开控制面板. 2.在区域和语言设置-管理中,选择更改显示语言. 3.选择管理标签,并点击更改系

在Linux系统中安装Go语言的详细教程

  这篇文章主要介绍了在Linux系统中安装Go语言的详细教程,由于国内很多人对谷歌的盲目追捧,导致Go语言在国内的人气远超国外...需要的朋友可以参考下 Go (也叫 "golang")是一款由Google最初开发的编程语言.它自诞生就有几个设计原则:简单性.安全性和速度.Go语言发行版拥有各种调试.测试.调优和代码审查工具.如今Go语言和它的工具链在大多数Linux发行版的基础仓库都可用,用默认的包管理器就可以安装. 在Ubuntu.Debian 或者 Linux Mint上安装G

解决win8系统下软件不兼容的方法教程

  在win8系统中的兼容性问题已不是个例,无论我们是安装驱动或游戏.软件,都出现了各种兼容性问题,其出现兼容问题一时微软官方在win8系统下程序兼容性有所改变,其次是因为win8只有少数用户在使用中,对于一些软件商.游戏商都不会将时间人力花费在win8兼容问题上,故此才出现了屡见不鲜的兼容性问题,那么当我们实在需要安装某一软件时,那么如何才能让软件兼容安全呢?下面看小编为大家带来的解决方法! 解决win8系统下软件不兼容的方法教程 方法一: 1.右击无法兼容的程序然后选择[兼容性疑难解答]:

Linux系统中的内存清理和释放命令归纳

  # 清理步骤 # 清理前内存使用情况 代码如下: free -m # 开始清理 代码如下: echo 1 > /proc/sys/vm/drop_caches # 清理后内存使用情况 代码如下: free -m 完成! # 查看内存条数命令: 复制代码 代码如下: dmidecode | grep -A16 "Memory Device$" To free pagecache: echo 1 > /proc/sys/vm/drop_caches To free dent

Linux系统基本的内存管理知识讲解

  内存是Linux内核所管理的最重要的资源之一.内存管理系统是操作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量.虚拟内存就是为了克服这个矛盾而采用的策略.系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量.Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大.核心把当前不用的内存块存到硬盘,腾出内存给其他目的.当原来的内容又要使用时,再读回内存. 一.内存使用情况监测 (1)实时监控内存使用情况 在命令行使用"Fr