Linux内存手动清理释放方法

本文深入解析了内存的四大消耗方面:进程消耗、Cache消耗、SLAB消耗和Pagetables消耗。详细介绍了如何通过查看/proc/meminfo和使用slabtop命令来监控内存使用情况,以及如何手动清理内存,包括清理cache、dentries和inodes的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 、内存计算

在这里插入图片描述

total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
#所以空闲内存=free+buffers+cached=total-used

总共有40218M,用掉35446M。其中 buffer + cache= 34277M,由于这种类型的内存是可以回收的,虽然我们用掉了35446M,但是实际上我们实在需要的话,这部分的buffer/cache内存是可以释放出来的。
另外还有一部分内存,SLAB和pagetables,分别占用了630608 kB和69988 kB。

#查看内存使用情况
cat /proc/meninfo

在这里插入图片描述
SLAB是内核为了提高性能,把每个需要重复使用的对象都会分个slab池,这个slab池会cache大量常用的对象,所以会消耗大量的内存;通过slabtop命令,我们可以看到slab消耗在了哪些地方。

#查看动态内存占用
slabtop

在这里插入图片描述
PageTables则是系统内核加载和运行时分配的内存,也就是系统所占用的内存。
综上,内存的消耗主要就在四个方面:
进程消耗、Cache消耗、SLAB消耗、Pagetables消耗
Pagetables和应用进程消耗一般不会太大,无需也没办法进行清理;cache和SLAB如果消耗过多,甚至应用关闭后还是没有办法释放,可以尝试手动的方式将进行内存清理(最好在应用关闭后再做清理操作)。

附:其他查询方案

#内存占用高的前20
ps aux |head -1;ps aux |grep -v PID |sort -rn -k +4|head -20
#查看硬件内存条数量
dmidecode |grep -

二 、内存清理

常用清理步骤

#手动清理内存前,先执行sync命令,将内存中的脏页,写进磁盘,以免数据丢失。
sync

echo 1 > /proc/sys/vm/drop_caches

#清除后要还原系统默认配置:
echo 0 > /proc/sys/vm/drop_caches

#查看设置
 sysctl -a | grep drop_caches

清理cache、dentries和inodes
echo 3 >/proc/sys/vm/drop_caches
只清理dentries和inodes
echo 2 >/proc/sys/vm/drop_caches
只清理cache
echo 1 >/proc/sys/vm/drop_caches

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值