先看看free命令结果:
# free
total used free shared buffers cached
Mem: 1035108 500168534940 0 5496 139120
-/+ buffers/cache: 355552 679556
Swap: 2096472 451984 1644488
第二行(mem):
total:总计物理内存的大小.
used:已使用多大.
free:可用有多少.
Shared:多个进程共享的内存总额.
Buffers/cached:磁盘缓存的大小.
第三行(-/ buffers/cached):
used:已使用多大.
free:可用有多少.
第二行(mem)的used/free与第三行(-/ buffers/cache) used/free的区别.
这两个的区别在于使用的角度来看,第二行是从OS的角度来看,对于OS, buffers/cached 都是属于被使用,它的可用内存是8908KB,已用内存是377116KB,其中包括,内核(OS)使用 Application(X, oracle,etc)使用的 buffers cached.
第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,buffer/cached是为了提高文件读取的性能,当应用程序需再用到内存的时候,buffer/cached会很快地被回收.
从应用程序的角度来说, 可用内存 = 系统free memory+ buffers+ cached.
如上例: 679556 = 534940 + 5496 + 139120
如何释放内存呢?
通过调整/proc/sys/vm/drop_caches来释放内存. 操作如下:
[root@server test]# cat /proc/sys/vm/drop_caches --/proc/sys/vm/drop_caches的值,默认为0
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 --将/proc/sys/vm/drop_caches值设为3
3
[root@server test]# free -m --查看释放的内存情况
其他参考:
/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, useecho 1 > /proc/sys/vm/drop_caches;
to free dentries and inodes, useecho 2 > /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, useecho 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.[@more@]