linux操作系统内存释放

已邀请:

http://nccloud.yytimes.com/uploads/answer/20210923/5d3aa456925fd803b33526fce09f3bb8.png


各参数含义:
  • total:总物理内存
  • used:已使用内存
  • free:完全未被使用的内存
  • shared:应用程序共享内存
  • buffers:缓存,主要用于目录方面,inode值等
  • cached:缓存,用于已打开的文件
  • -buffers/cache:应用程序使用的内存大小,used减去缓存值
  • +buffers/cache:所有可供应用程序使用的内存大小,free加上缓存值

Linux服务器为了提高效率,会提前申请内存,即使这些内存没有被具体应用使用,Linux也会提前申请这些内存,然后利用这些内存做缓存用,即将刚打开的文件系统存入cache中,这样对应的服务器free值会越来越少,buffers和cached会越来越大。


优化:
1、手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)
sync
2、强制释放缓存

echo 1 > /proc/sys/vm/drop_caches 

drop_caches的值可以是0-3之间的数字,代表不同的含义

0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存


释放完内存后改回去让系统重新自动分配内存
echo 0 >/proc/sys/vm/drop_caches

free -m #看内存是否已经释放掉了。

如需释放所有缓存,就输入下面的命令
echo 3 > /proc/sys/vm/drop_caches


定时每12小时释放一次:



echo "0 */12 * * * root sync && echo 3 > /proc/sys/vm/drop_caches" >> /etc/crontab

要回复问题请先登录注册