方法
#free -m
#sync
#echo 1 > /proc/sys/vm/drop_caches
#free -m
解释
- free-m查看此时内存使用情况
第一类单位参数:
1) -b, –bytes, 以Byte为单位显示内存使用情况
2) -k, –kilo, 以KB为单位, 这也是默认值
3) -m, –mega, 以MB为单位显示内容使用情况
4) -g, –giga, 以GB为单位显示内存使用情况
第二类参数:
1)、 -h, –human, 自动将数值转换为人类易读形式
2)、 -c, –count, 展示结果count次,需与-s配合使用
3)、 -s, –seconds, 动态刷新内存使用情况的间隔
free -m各字段含义
第一部分Mem行:
========================
total 内存总数: 3865M
used 已经使用的内存数: 1545M
free 空闲的内存数: 2320M
shared 多个进程共享的内存总额 196M
buffers Buffer 缓存内存数: 176M
cached Page 缓存内存数:569M
关系:total (3865M) = used(1545M) + free(2320M)
第二部分(-/+ buffers/cache):
========================
(-buffers/cache) used内存数:798M
(指的第一部分Mem行中的used – buffers – cached)
即为1545 – 176 – 569 = 800 取整时计算差异 2M
(+buffers/cache) free内存数: 3066M
(指的第一部分Mem行中的free + buffers + cached)
即为2320 + 176 + 569 = 3065 取整时计算差异 1M
第三部分是指交换分区
========================
当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。这些被释放的进程被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。所以swap分区不被占用或者占用很少,说明现在系统内存够用,运行还算良好,不会影响系统运行
释放前最好sync一下,防止丢数据.因为LINUX的内核机制,一般情况下不需要特意去释放已经使用的cache。这些cache起来的内容可以增加文件以及的读写速度。
开始清理
echo 1 > /proc/sys/vm/drop_caches
drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
- 清理后内存使用情况
free -m
/proc/sys是一个虚拟文件系统,可以通过对它的读写操作做为与kernel实体间进行通信的一种手段 也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整 那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。其默认数值为0.
向/proc/sys/vm/drop_caches中写入内容,会清理缓存 建议先执行sync(sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件) 执行echo 1、2、3 至 /proc/sys/vm/drop_caches, 达到不同的清理目的
问题
1. 在终端输入“sudo echo 3 > /proc/sys/vm/drop_caches”后提示权限不够 |
---|
sudo仅让echo命令有了权限,而 > 命令没有权限 解决办法,将整个命令以字符串形式赋予权限并执行 sudo bash -c “echo 3 > /proc/sys/vm/drop_caches” |