`
- 浏览:
235458 次
- 来自:
...
-
细心的朋友会注意到,当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题.先来说说free命令[root@server ~]# free -m total used free shared buffers cachedMem: 249 163 86 0 10 94-/+ buffers/cache: 58 191Swap: 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 cachedMem: 249 244 4 0 8 174-/+ buffers/cache: 62 187Swap: 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 cachedMem: 249 244 5 0 8 174-/+ buffers/cache: 61 188Swap: 511 0 511MS没有任何变化,那么我能否手动释放掉这些内存呢???回答是可以的!/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存.操作如下:[root@server test]# cat /proc/sys/vm/drop_caches0首先,/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_caches3将/proc/sys/vm/drop_caches值设为3[root@server test]# free -m total used free shared buffers cachedMem: 249 66 182 0 0 11-/+ buffers/cache: 55 194Swap: 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)Writingtothisfilecauses the kernel to drop clean caches,dentries and inodes from memory, causing that memorytobecomefree.Tofreepagecache,useecho 1 > /proc/sys/vm/drop_caches; tofree dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;to free pagecache, dentriesandinodes,useecho3>/proc/sys/vm/drop_caches.Because this is a non-destructive operationanddirtyobjectsare not freeable, the user should run sync(8) first.
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在标题和描述中提到的问题,即"Linux下buff/cache占用过高",这是一个常见的系统性能优化问题,尤其是对于运行Java应用或者其他资源密集型服务的云服务器而言。这里我们将深入探讨buff/cache的作用、为何会占用过多...
Linux内核内存Cache机制是操作系统优化性能的关键组成部分,它通过减少对主存的访问次数,提高了数据读取和写入的速度。在Linux系统中,内存Cache主要分为两种类型:Page Cache和Disk Cache,它们分别针对文件系统和...
标题提到的"linux 查看 cache 中文件",指的是在Linux环境下查看内存中的缓存文件。这个功能可以通过特定的工具实现,描述中提及的“安装此工具后,可以查看系统内存中cache包含的文件”,很可能是指一个名为`ftools...
在Linux环境下,内存管理是一项重要的任务,尤其在服务器环境中更是如此。随着程序的运行,Linux操作系统会利用空闲内存作为缓存,以提高文件读取效率。然而,这也可能导致看似“内存不足”的情况发生,即使应用程序...
### Linux下手动释放内存 在Linux系统中,内存管理是一个重要的方面,特别是在服务器环境中,合理的内存管理能够提高系统的性能和稳定性。本文将详细介绍如何通过命令手动释放Linux系统的内存,并解释这些命令背后...
1. OOM Killer:当系统内存极度紧张时,Linux会启动Out-of-Memory Killer,选择优先级低或消耗内存过多的进程进行杀死,以释放内存。 2. 内存气泡:内存气泡是一种优化技术,它允许空闲内存从一个进程转移到另一个...
在Linux系统中,Buffer和Cache的概念也被用于描述文件系统的状态。Buffer是指待写入磁盘的数据,它们通常与文件系统的写操作相关,比如在文件被修改后,系统会先将其内容暂存于Buffer中,然后在合适的时机(例如通过...
在Linux中,文件Cache起到了内存管理与文件系统间的桥梁作用,确保数据高效地在内存和存储设备之间流动。 文件Cache主要由Page Cache和Buffer Cache两部分组成。Page Cache是更高层的概念,用于缓存文件的连续数据...
Linux 系统中的内存清理和释放命令归纳 Linux 系统中的内存清理和释放命令是非常重要的,因为它可以帮助我们释放系统中的内存,从而提高系统的性能。在 Linux 系统中,有多种方式可以清理和释放内存,本文将对这些...
在这种情况下,Linux提供了/proc/sys/vm/drop_caches接口,允许用户手动干预内核的内存管理行为。 具体来说,/proc是一个虚拟文件系统,通过它可以和内核实体进行通信。在这个目录下的sys/vm/drop_caches文件,就是...
- **功能描述**:内存分配和回收机制负责动态地为进程分配和释放物理内存。它确保了内存资源的有效利用,并避免了内存泄漏等问题。 - **函数调用关系图**:此图展示了内存分配过程中各个函数之间的调用顺序,有助于...
本文将深入探讨Linux下应用程序的内存使用情况,并解析`top`命令和`free`命令提供的内存信息。 首先,当我们通过`top`命令查看内存使用情况时,要注意它显示的内存占用并不完全代表应用程序实际消耗的内存。这是...
### Linux内存清理与释放命令详解 #### 概述 Linux作为一种高效的服务器操作系统,在资源管理上有着卓越的表现。尤其是在内存管理方面,Linux系统倾向于利用空闲内存作为缓存,以提高文件系统的读写性能。然而,在...
8. OOM(Out-Of-Memory)杀手:当系统内存耗尽时,Linux会启动OOM killer,选择杀死一些进程以释放内存。选择哪个进程被杀取决于其内存使用情况和优先级。 9. 内存管理工具:`free`命令显示当前系统的内存使用情况...
本资料包聚焦于Linux下的内存管理,提供了深入的学习材料,旨在帮助读者理解和掌握这一关键领域。 Linux内存管理主要包括以下几个方面: 1. 物理内存(Physical Memory):Linux系统中的物理内存是指计算机硬件上...
手动释放 Linux 内存 - procsysvmdrop_caches Linux 内存管理是 Linux 操作系统中一个非常重要的部分。在日常使用中,我们经常会遇到物理内存被用光的现象,特别是在频繁存取文件时。这个问题貌似有不少人在问,...
- 当应用程序需要更多内存时,系统会自动回收部分缓存,释放内存供应用使用。 - 使用`/proc/sys/vm/drop_caches`文件可以手动清理缓存。 2. **`free`命令详解**: - `free -m`显示内存使用情况,其中 `-m` 表示...
当物理内存不足时,Linux会使用交换机制,将部分内存中的数据写入交换分区(swap space)以释放物理内存。交换过程由伙伴系统和页高速缓存共同完成,涉及到 swap_out 和 swap_in 操作。虽然交换可以缓解内存压力,但...