当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。因此,在系统备份(tar) 后,用top看的时候内存使用会吓你一大跳,用光了?
先用 free -m 看看系统内存情况:
[oracle@server-centos01 ~]$ free -m
total used free shared buffers cached
Mem: 4047 4012 35 0 68 2509
-/+ buffers/cache: 1434 2613
Swap: 1906 0 1906
其他的先别管,留意
-/+ buffers/cache: 1434 2613
2613才是真正可用的内存,而不是total - used =free。
那么,有没有办法释放这些内存呢,答案是有的。先看看以下的介绍:
/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 first.
释放的方法:
1. sync
2. echo 3 >/proc/sys/vm/drop_caches
再用 free -m 去看:
[root@server-centos01 ~]# free -m
total used free shared buffers cached
Mem: 4047 1652 2394 0 0 234
-/+ buffers/cache: 1417 2629
Swap: 1906 0 1906
其实,如果不是用于调试,这类手工释放的方法建议还是不要去用。
2009年3月25日星期三
Linux:Centos 如何释放内存
订阅:
博文评论 (Atom)
没有评论:
发表评论