网站首页 > 博客文章 正文
我们在使用linux系统时经常会使用free -m 来查看linux内存剩余的大小,比如
这里看到空闲的内存大小已经非常小只剩88M,首先看下各个字段的解释:
- total: 系统中的可用物理内存
- used: 已使用的物理内存
- free: 剩余多少物理内存可用
- shared: 共享使用的物理内存
- buff/cache: buffer 和 cache 使用的物理内存
- available: 可被回收的内存
Linux真实剩余内存
linux系统在运行时,free剩余屋里内存会在一个稳定值运行,看上去可能比较小。那么真实的剩余内存数量是多少?
这里可以简单理解为available是真的剩余内存,粗略计算也就是free + buff/cache的值,这个值会比available略高,available值是减去了不可回收的内存。
linux内存回收
这样运行是没有问题的,但是当某个程序需要一整块物理内存时,这时候就会申请不到可以的内存,此时我们就需要来释放内存,以便于后续的程序运行,可以使用如下命令来回收内存,在执行前需要使用sysn先将内存数据回写到磁盘。
echo 1 > /proc/sys/vm/drop_caches
#表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches
#清除回收slab分配器中的对象
echo 3 > /proc/sys/vm/drop_caches
#表示清除pagecache和slab分配器中的缓存对象。
在回收内存时,系统IO会升高,此时内核在对比cache中的数据和对应硬盘文件上的数据是否一致,如果不一致需要写回,之后才能回收,所以尽量在空闲时来执行。
定时检查自动回收内存
我们也可以内存剩余定义一个阈值比如剩余20%时,脚本在晚上某个时间段或者空闲时段来执行内存回收。
#!/bin/bash
MEM_TOTAL=`free -m |grep Mem: | awk '{print $2}'`
MEM_FREE=`free -m |grep Mem: | awk '{print $4}'`
MEM_USE=`free -m |grep Mem: | awk '{print $3}'`
if [ $MEM_USE -gt 0 ]; then
MEM_PRO=0`echo "scale=2;$MEM_FREE/$MEM_TOTAL" | bc`
echo "$(date) free proportion $MEM_PRO" >>/var/log/mem.log
mem_threshold='0.20'
mem_now=`expr $MEM_PRO \> $mem_threshold`
if [ $mem_now -eq 0 ]; then
sync
sync
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
fi
fi
喜欢大叔的文章可以关注我。
- 上一篇: 一次线上故障:数据库连接池泄露后的思考
- 下一篇: Mybatis参数传递
猜你喜欢
- 2024-12-05 路虎揽胜行驶中仪表提示只有正常高度可用
- 2024-12-05 Mybatis参数传递
- 2024-12-05 一次线上故障:数据库连接池泄露后的思考
- 2024-12-05 Win10投屏功能无法使用解决办法(Miracast: Available, no HDCP)
- 2024-12-05 在Linux中如何禁止用户登录
- 2024-12-05 No qualifying bean of type '××Mapper' available的错误解决
- 2024-12-05 Steam显示 Steam is not available的最新解决方法
- 2024-12-05 面对性骚扰 两位中外女士的真实反应到底有何区别
- 2024-12-05 R包无法安装,这个方法实测有效
- 2024-12-05 「电脑知识」FirPE系统维护工具箱 v1.8纯净无流氓U盘装机必备软件
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)