linux如何清理内存

linux如何清理内存,第1张

1、使用free命令查看一下当前内存使用情况

free

           total used free shared buffers cached

Mem: 16621896 8967952 7653944 0 212352 8377276

-/+ buffers/cache: 378324 16243572

Swap: 10241428 0 10241428

#针对free命令后出现的信息解释

#total:总计物理内存的大小

#used:已使用多大

#free:可用有多少

#Shared:多个进程共享的内存总额

#Buffers/cached:磁盘缓存的大小

2、执行sync同步数据

sync

#该命令将未写的系统缓冲区写到磁盘中

#包含已修改的 i-node、已延迟的块 I/O 和读写映射文件

3、清理cache(缓存)

echo 3 > /proc/sys/vm/drop_caches 

free

total used free shared buffers cached

Mem: 16621896 579592 16042304 0 268 308708

-/+ buffers/cache: 270616 16351280

Swap: 10241428 0 10241428

4、对比步骤1和3的free命令,used(减少)、free(增大)对应Mem部分就清楚了,cache(缓存)被清理掉了。

在Linux中每次用free查看的时候,发现free的空间都只有500M左右。同样的环境32G只剩下这点,64G的也只剩下这么一点。后来发现都被Cache占用了,因为服务器上运行了Kafka环境,每周的日志文件都有一二百G的,估计就是他占用了page cache吧。

Free中的buffer和cache:(它们都是占用内存):

buffer : 作为buffer cache的内存,是块设备的读写缓冲区

cache: 作为page cache的内存, 文件系统的cache

如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi会非常小。

Linux内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。也可以用动释放,释放的时候需要对cache中的数据跟对应文件中的数据一致。

释放的方式有下以几种

一般情况下释放pagecache就可以了。这样可以写一个sh脚本来在服务器空闲的时候定时执行

使用crontab来设置定时任务,如每天4点开始清理

本文参考: https://www.jianshu.com/p/9b9f4917fb2e


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7379710.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-05
下一篇2023-04-05

发表评论

登录后才能评论

评论列表(0条)

    保存