Linux cache内存简介以及释放

关于Linux cached内存简析

原文:http://www.2cto.com/os/201204/126594.html  点击打开链接

测试MBS 系统,AP的weblogic 只是设置了1.5G内存,但是经过3次稳定性测试,内存的利用率达到99%。
nmon的监控揭发发现存在5.6G的cached内存,下面介绍一下:
Linux与Windows不同,会存在缓存内存,通常叫做Cache Memory。有些时候你会发现没有什么程序在运行,但是使用top或free命令看到可用内存会很少。  www.2cto.com  
什么是Cache Memory(缓存内存):
当你读写文件的时候,Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。
其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用。如果你希望手动去释放Cache Memory(缓存内存)的话也是有办法的。
 
释放Cache Memory(缓存内存):
用下面的命令可以释放Cache Memory:
[rootmin@localhost~]#echo 3 > /proc/sys/vm/drop_caches
 
Linux中如何释放cache内存
因为LINUX的内核机制,一般情况下不需要特意去释放已经使用的cache。这些cache起来的内容可以增加文件以及的读写速度。
先说下free命令怎么看内存
[rootmin@localhost~]# free
           total   used    free  shared buffers cached
Mem:      515588   295452 220136    0    2060   64040
-/+ buffers/cache: 229352 286236
Swap:     682720    112   682608
其中第一行用全局角度描述系统使用的内存状况:
total——总物理内存  www.2cto.com  
used——已使用内存,一般情况这个值会比较大,因为这个值包括了cache+应用程序使用的内存
free——完全未被使用的内存
shared——应用程序共享内存
buffers——缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加)
cached——缓存,用于已打开的文件
注意:
total=used+free
used=buffers+cached (maybe add shared also)
第二行描述应用程序的内存使用:
前个值表示-buffers/cache——应用程序使用的内存大小,used减去缓存值
后个值表示+buffers/cache——所有可供应用程序使用的内存大小,free加上缓存值
注意
-buffers/cache=used-buffers-cached
+buffers/cache=free+buffers+cached
第三行表示swap的使用:  www.2cto.com  
used——已使用
free——未使用
cache释放:
1.   To free pagecache:
[rootmin@localhost~]#echo 1 > /proc/sys/vm/drop_caches
2.   To free dentries and inodes:
[rootmin@localhost~]#echo 2 > /proc/sys/vm/drop_caches
3.   To free pagecache, dentries and inodes:
[rootmin@localhost~]#echo 3 > /proc/sys/vm/drop_caches
说明,释放前最好sync一下,防止丢数据

Linux下cache内存释放
原文:http://www.2cto.com/os/201108/101147.html   点击打开链接
/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
are not freeable, the user should run sync(8) first.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中的缓存突然被释放,可能是因为系统内存压力较大,操作系统为了释放内存给应用程序使用,会主动将一部分缓存释放Linux系统中的缓存是用来缓存文件系统数据的。在应用程序读取文件时,操作系统会将文件的内容存储在内存中的缓存中,以加快后续的读取速度。当多个应用程序同时读取相同的文件时,只需要从缓存中读取即可,减少了对磁盘的访问,提高了系统的性能。 然而,当内存压力较大时,操作系统会主动释放一部分缓存,以避免系统的性能下降。释放缓存后,系统会将原本缓存中的内容重新加载到内存中的缓存,但这个过程可能会产生一定的延迟,导致缓存命中率下降,从而影响读取文件的速度。 释放缓存的情况通常出现在以下几种情况下: 1. 当应用程序需要更多的内存时,操作系统会优先保证应用程序的内存使用,而减少缓存的占用。 2. 当系统执行大量的写入操作时,为了保证数据的一致性,操作系统会将缓存中的数据写回磁盘,释放缓存空间。 3. 在系统启动或重启后,为了确保内存的一致性,操作系统会清空缓存。 4. 当另一个应用程序需要更多的内存时,操作系统会将缓存释放,以便分配给需要的应用程序。 总之,当Linux系统中的缓存突然被释放时,通常是为了释放内存给其他应用程序使用,以保证系统的性能和内存的稳定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值