Linux上清理内存缓存、缓冲与交换空间

每个Linux系统都有三个选项可以在不中断任何进程或服务的情况下清除缓存。

1 只清除页面缓存(pagecache)

sync; echo 1 > /proc/sys/vm/drop_caches

2 清除目录项和inode

sync; echo 2 > /proc/sys/vm/drop_caches

3 清除页面缓存、目录项和i节点

sync; echo 3 > /proc/sys/vm/drop_caches

上述命令的解释

sync命令将刷新文件系统缓冲区。分号(;)分隔的命令依次执行。在执行序列中的下一个命令之前,shell等待每个命令终止。如内核文档中提到的,写入drop_cache将清除缓存而不会终止任何应用程序或服务。echo命令正在做的任务就是写入文件。

如果你必须清除磁盘缓存,在企业和生产环境中第一个命令(“…echo 1>…”)是最安全的,它将仅仅只清除页面缓存。生产环境中不推荐使用上述第三个选项(“…echo 3 >…”),直到你知道你正在做什么。因为它会清除页面缓存,目录项和i节点。
在这里插入图片描述
内容借鉴:https://www.cnblogs.com/minn/p/9030764.html

### 如何在 Linux 中清除缓存以释放内存磁盘空间 #### 使用 `sync` 和 `/proc/sys/vm/drop_caches` Linux 提供了一种简单的方式来手动清除文件系统的页缓存、目录项缓存和 inode 缓存。这可以通过写入特定的数值到 `/proc/sys/vm/drop_caches` 文件实现[^3]。 执行以下命令前,建议先运行 `sync` 命令以确保所有未写入的数据被刷新到磁盘: ```bash sync ``` 随后可以使用以下命令之一来清除不同类型的缓存: - **仅清除页缓存** 运行以下命令可清除页缓存: ```bash echo 1 > /proc/sys/vm/drop_caches ``` - **仅清除目录项和 inode 缓存** 若要清除目录项和 inode 缓存,则需运行: ```bash echo 2 > /proc/sys/vm/drop_caches ``` - **同时清除页缓存、目录项和 inode 缓存** 要一次性清除所有的上述三种缓存类型,可以运行: ```bash echo 3 > /proc/sys/vm/drop_caches ``` 这些操作不会影响实际使用的应用程序数据,而是清除了不再需要的缓存数据,从而可能帮助释放部分内存资源。 #### 查看当前内存状态 为了确认清理效果,可以使用工具查看内存使用情况。以下是常用的几个方法: - **free 命令** 显示系统中总的可用内存以及已用和剩余的物理内存及交换分区的信息。 ```bash free -h ``` - **cat /proc/meminfo** 输出详细的内存统计信息,包括各种缓存缓冲区的状态。 ```bash cat /proc/meminfo ``` - **slabtop 工具** 实时监控内核 slab 分配器中的对象分配情况,有助于了解哪些组件占用了大量内存。 ```bash slabtop ``` 以上命令可以帮助管理员更好地理解内存分布状况,并验证缓存清理的效果[^2]。 #### 注意事项 尽管清除缓存可能会暂时增加磁盘 I/O 或降低某些工作负载的速度,但在调试或测试环境中这样做通常是安全的。然而,在生产环境下的服务器上频繁执行此类操作并不推荐,因为操作系统设计初衷就是利用空闲内存作为缓存以提高性能[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值