当前位置:首页 > 内存 > 正文

释放内存linux

  • 内存
  • 2024-05-31 23:52:59
  • 2979

一、如何为linux释放内存和缓存在Linux系统下,一般我们不需要释放内存,因为系统已经对内存进行了很好的管理。但凡事都有例外有时内存会被缓存占用,导致系统使用SWAP空间,影响性能,这时就需要进行内存释放操作(清空缓存)。
Linux系统缓存机制相当先进,它针对的是tooth(用于VFS,加速文件路径名到inode的转换)、BufferCache(读写磁盘块)和PageCache(读写文件inode))。write)来执行缓存操作。但在进行大量的文件操作后,缓存本质上会消耗内存资源。但实际上,我们的文件操作已经结束了,这部分缓存已经不再使用了。此时,我们是否可以只看到缓存占用的内存空间呢?
所以,我们在Linux下还是需要手动释放内存,这实际上就是一个缓存释放操作。
要达到删除缓存的目的,我们首先需要了解主配置文件/proc/sys/vm/drop_caches。该文件记录了缓存释放参数,默认值为0,表示缓存不释放。它的值可以是0到3之间的任意数字,代表不同的含义:
0–不释放
1–释放页面缓存
2–释放dentry和inode
3–释放allcache
知道参数后,我们就可以根据自己的需要使用以下命令进行操作。
首先我们需要使用sync命令将所有非写系统缓冲区写入磁盘,包括修改的i节点、延迟块I/O和读写映射文件。否则,未保存的文件可能会在缓存释放过程中丢失。
#sync
接下来,我们需要将必要的参数写入文件/proc/sys/vm/drop_caches中,例如,如果我们需要删除所有缓存,则输入以下命令:
#echo3>/proc/sys/vm/drop_caches
该命令输入后立即生效,可以查看可用内存是否明显增加。
要查询当前缓存删除的参数,可以输入以下命令:
#cat/proc/sys/vm/drop_caches
#free-m
要清除swap,只需先关闭swap即可,使用:
#swapoff-a
然后启用swap,因为它只是清除,是不是不使用swap:
#swapon-a