2009年3月25日星期三

Linux:Centos 如何释放内存


     当在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


    其实,如果不是用于调试,这类手工释放的方法建议还是不要去用。
   

没有评论: