Linux服务器如何释放物理内存
Linux下频繁存取文件时,物理内存可能会被耗尽,当程序结束后,内存不会释放,而是一直作为cache。之前我们前边的文章《linux内存命令free
》以及文章《linux的free命令详解-内存是拿来用的不是拿来看的》就针对linux服务器内存管理机制做了一个详细的介绍说明。linux缓存有dentry,buffer cache,page cache。Dentry用来加速文件路径名到inode的转换;buffer cache加速磁盘块的读写;page cache加速inode的读写。缩短IO调用时间。
下面简单说下一些物理内存释放方法:
1.释放page cahce
echo 1 > /proc/sys/vm/drop_caches
2.释放dentry和inode
echo 2 > /proc/sys/vm/drop_caches
3.释放page cache,dentry,inode
echo 3 > /proc/sys/vm/drop_caches
执行结果如下:
[[email protected] vm]# free -m total used free shared buffers cached Mem: 498 491 6 0 62 195 -/+ buffers/cache: 232 265 Swap: 0 0 0 [[email protected] vm]# echo 3 > /proc/sys/vm/drop_caches [[email protected] vm]# free -m total used free shared buffers cached Mem: 498 255 242 0 1 30 -/+ buffers/cache: 223 274
在释放内存前,最好先允许sync,强制将系统正在处理的page cahce,dentry,inode写入磁盘。