`

Linux下释放cache内存

阅读更多

来源:http://soft.chinabyte.com/os/56/11805056.shtml

细心的朋友会注意到,当你在linux 下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题.

  先来说说free命令

  [root@server ~]# free -m

  total used free shared buffers cached

  Mem: 249 163 86 0 10 94

  -/+ buffers/cache: 58 191

  Swap: 511 0 511

  其中:

  total 内存总数

  used 已经使用的内存数

  free 空闲的内存数

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

  buffers Buffer Cache和cached Page Cache  磁盘 缓存的大小

  -buffers/cache 的内存数:used - buffers - cached

  +buffers/cache 的内存数:free + buffers + cached

  可用的memory=free memory+buffers+cached

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

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

  [root@server ~]# cp -r /etc ~/test/

  [root@server ~]# free -m

  total used free shared buffers cached

  Mem: 249 244 4 0 8 174

  -/+ buffers/cache: 62 187

  Swap: 511 0 511

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

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

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

  [root@server test]# free -m

  total used free shared buffers cached

  Mem: 249 244 5 0 8 174

  -/+ buffers/cache: 61 188

  Swap: 511 0 511

  MS没有任何变化,那么我能否手动释放掉这些内存呢???回答是可以的!

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

  [root@server test]# cat /proc/sys/vm/drop_caches

  0

  首先,/proc/sys/vm/drop_caches的值,默认为0

  [root@server test]# sync

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

  [root@server test]# echo 3 >/proc/sys/vm/drop_caches

  [root@server test]# cat /proc/sys/vm/drop_caches

  3

  将/proc/sys/vm/drop_caches值设为3

  [root@server test]# free -m

  total used free shared buffers cached

  Mem: 249 66 182 0 0 11

  -/+ buffers/cache: 55 194

  Swap: 511 0 511

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

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

  /proc/sys/vm/drop_caches (since Linux 2.6.16)

  Writing to this file causes the kernel to drop clean caches,

  dentries and inodes from memory, causing that memory to become

  free.

  To free pagecache, use echo 1 >/proc/sys/vm/drop_caches; to

  free dentries and inodes, use echo 2 >/proc/sys/vm/drop_caches;

  to free pagecache, dentries and inodes, use echo 3 >

  /proc/sys/vm/drop_caches.

  Because this is a non-destructive operation and dirty objects

分享到:
评论

相关推荐

    linux下释放cache内存

    ### Linux下释放Cache内存 #### 一、理解Linux内存管理机制 在Linux系统中,内存管理机制非常高效且复杂。为了提升文件系统访问速度,Linux内核会利用空闲内存来缓存文件数据(称为Page Cache)和其他类型的缓存...

    解决 linux 下 buffcache 占用过高的问题.docx

    在标题和描述中提到的问题,即"Linux下buff/cache占用过高",这是一个常见的系统性能优化问题,尤其是对于运行Java应用或者其他资源密集型服务的云服务器而言。这里我们将深入探讨buff/cache的作用、为何会占用过多...

    Linux内核内存Cache机制原理

    Linux内核内存Cache机制是操作系统优化性能的关键组成部分,它通过减少对主存的访问次数,提高了数据读取和写入的速度。在Linux系统中,内存Cache主要分为两种类型:Page Cache和Disk Cache,它们分别针对文件系统和...

    linux 查看 cache 中文件

    标题提到的"linux 查看 cache 中文件",指的是在Linux环境下查看内存中的缓存文件。这个功能可以通过特定的工具实现,描述中提及的“安装此工具后,可以查看系统内存中cache包含的文件”,很可能是指一个名为`ftools...

    手工释放linux内存.pdf

    在Linux环境下,内存管理是一项重要的任务,尤其在服务器环境中更是如此。随着程序的运行,Linux操作系统会利用空闲内存作为缓存,以提高文件读取效率。然而,这也可能导致看似“内存不足”的情况发生,即使应用程序...

    Linux下手动释放内存

    ### Linux下手动释放内存 在Linux系统中,内存管理是一个重要的方面,特别是在服务器环境中,合理的内存管理能够提高系统的性能和稳定性。本文将详细介绍如何通过命令手动释放Linux系统的内存,并解释这些命令背后...

    linux核心中的内存管理和缓冲机制

    1. OOM Killer:当系统内存极度紧张时,Linux会启动Out-of-Memory Killer,选择优先级低或消耗内存过多的进程进行杀死,以释放内存。 2. 内存气泡:内存气泡是一种优化技术,它允许空闲内存从一个进程转移到另一个...

    Oracle Buffer和Cache的区别

    在Linux系统中,Buffer和Cache的概念也被用于描述文件系统的状态。Buffer是指待写入磁盘的数据,它们通常与文件系统的写操作相关,比如在文件被修改后,系统会先将其内容暂存于Buffer中,然后在合适的时机(例如通过...

    Linux系统内核文件Cache管理机制

    在Linux中,文件Cache起到了内存管理与文件系统间的桥梁作用,确保数据高效地在内存和存储设备之间流动。 文件Cache主要由Page Cache和Buffer Cache两部分组成。Page Cache是更高层的概念,用于缓存文件的连续数据...

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

    Linux 系统中的内存清理和释放命令归纳 Linux 系统中的内存清理和释放命令是非常重要的,因为它可以帮助我们释放系统中的内存,从而提高系统的性能。在 Linux 系统中,有多种方式可以清理和释放内存,本文将对这些...

    手工释放linux内存_proc sys vm drop_caches

    在这种情况下,Linux提供了/proc/sys/vm/drop_caches接口,允许用户手动干预内核的内存管理行为。 具体来说,/proc是一个虚拟文件系统,通过它可以和内核实体进行通信。在这个目录下的sys/vm/drop_caches文件,就是...

    linux源代码分析之内存管理

    - **功能描述**:内存分配和回收机制负责动态地为进程分配和释放物理内存。它确保了内存资源的有效利用,并避免了内存泄漏等问题。 - **函数调用关系图**:此图展示了内存分配过程中各个函数之间的调用顺序,有助于...

    Linux下应用程序到底使用了多少内存

    本文将深入探讨Linux下应用程序的内存使用情况,并解析`top`命令和`free`命令提供的内存信息。 首先,当我们通过`top`命令查看内存使用情况时,要注意它显示的内存占用并不完全代表应用程序实际消耗的内存。这是...

    linux 内存清理/释放命令总结

    ### Linux内存清理与释放命令详解 #### 概述 Linux作为一种高效的服务器操作系统,在资源管理上有着卓越的表现。尤其是在内存管理方面,Linux系统倾向于利用空闲内存作为缓存,以提高文件系统的读写性能。然而,在...

    linux-memory-manage.rar_Linux 内存管理_linux_memory_内存管理 linux_内存管理

    8. OOM(Out-Of-Memory)杀手:当系统内存耗尽时,Linux会启动OOM killer,选择杀死一些进程以释放内存。选择哪个进程被杀取决于其内存使用情况和优先级。 9. 内存管理工具:`free`命令显示当前系统的内存使用情况...

    linux下内存管理

    本资料包聚焦于Linux下的内存管理,提供了深入的学习材料,旨在帮助读者理解和掌握这一关键领域。 Linux内存管理主要包括以下几个方面: 1. 物理内存(Physical Memory):Linux系统中的物理内存是指计算机硬件上...

    手工释放linux内存_procsysvmdrop_caches.pdf

    手动释放 Linux 内存 - procsysvmdrop_caches Linux 内存管理是 Linux 操作系统中一个非常重要的部分。在日常使用中,我们经常会遇到物理内存被用光的现象,特别是在频繁存取文件时。这个问题貌似有不少人在问,...

    Linux-定期清内存缓存-shell脚本

    - 当应用程序需要更多内存时,系统会自动回收部分缓存,释放内存供应用使用。 - 使用`/proc/sys/vm/drop_caches`文件可以手动清理缓存。 2. **`free`命令详解**: - `free -m`显示内存使用情况,其中 `-m` 表示...

    01-Linux内存管理之二:在X86上的虚拟内存管理.rar

    当物理内存不足时,Linux会使用交换机制,将部分内存中的数据写入交换分区(swap space)以释放物理内存。交换过程由伙伴系统和页高速缓存共同完成,涉及到 swap_out 和 swap_in 操作。虽然交换可以缓解内存压力,但...

Global site tag (gtag.js) - Google Analytics