当前位置:首页 > 内存 > 正文

linux 清理内存cache

  • 内存
  • 2024-04-17 09:55:06
  • 1683

如何为linux释放内存和缓存
在Linux系统上,通常不需要释放内存,因为系统已经很好地管理内存了。 但凡事都有例外。 有时缓存会占用内存,导致系统使用SWAP空间,影响性能。 这时候就需要执行释放内存(清除缓存)的操作。
Linux系统上的缓存机制主要针对dentry(用于VFS,将文件路径名快速转换为inode)、BufferCache(用于读写磁盘块)和PageCache(用于读写文件)。 缓存操作是使用inode执行的。 然而,在执行大量文件操作后,缓存会默认消耗内存资源。 然而实际上文件操作已经完成,这部分缓存不再被使用。 此时,我们是否可以只看缓存占用内存空间呢?
所以在Linux中你还是要手动释放内存,这实际上就是释放缓存。
要达到删除缓存的目的,首先要了解关键配置文件/proc/sys/vm/drop_caches。 该文件记录了解缓存参数。 默认为0,表示不清除缓存。 该值可以是0到3之间的数字,具有多种含义:
0–不释放
1–释放页面缓存
2–释放dentry和inode
3–清除所有缓存
一旦了解了参数,就可以根据需要使用以下指令进行操作。
您必须首先使用sync命令将所有未写入的系统缓冲区写入磁盘,包括修改的i节点、延迟的块I/O和读写映射文件。 否则,未保存的文件可能会在缓存释放过程中丢失。
#sync
接下来我们需要将所需的参数写入/proc/sys/vm/drop_caches文件中。 例如,如果需要删除所有缓存,请输入以下命令:
#echo3>/proc/sys/vm/drop_caches
该命令输入后立即生效这是可能的。 您可以检查是否有可用内存。 明显增加了。
要查询当前哪些参数从缓存中释放,可以输入以下命令:
#cat/proc/sys/vm/drop_caches
#free-m
要清除交换,请先关闭交换,然后使用:
#swapoff-a
然后启用交换。 既然只是擦除,那是不是就意味着不使用swap呢?:
#swapon-a
http://blog.sina.com.cn/s/blog_539d6e0c0100ys3o.html
Linux自动释放内存脚本
发布119天前?技术文章?暂无评论
脚本下载地址:已缓存
脚本内容:
#!/bin/bash
#缓存释放:
#Tofreepagecache:
同步
同步
#echo1>/proc/sys/vm/drop_caches
#Tofreedentriesandinodes:
#echo2>/proc/sys/vm/drop_caches
#Tofreepagecache,dentriesandinodes:
echo3>/proc/sys/vm/drop_caches
#说明,为避免数据丢失,释放前最好先进行同步。
要每天自动运行,使用系统crontab:
crontab-e
输入以下内容:
0000***/root/Cached.sh
一旦发布第0天记忆,这个时间可以根据需要设置。 服务器每天自动禁用一次,并且没有问题。
我在设置此脚本时遇到了一系列问题
在测试运行/Cached.sh期间,我收到一条错误消息:权限被拒绝权限问题
解决方案:
chmod+x.Cached.sh

chmod777Cached.sh
然后您会收到另一条错误消息:/bin/bash^M:badinterpre ter:Nosuchfileordirectory
这是因为Windows上编辑的.sh文件的编码格式与Linux上不同。
dos2unixCached.sh
http://blog.sinorain.com/archives/157


Linux系统中的内存清理和释放命令归纳
#清理步骤
#清理前内存使用情况
代码如下:
free-m
#开始清理
代码如下
echo1/proc/sys/vm/drop_caches
#清理后内存使用情况
代码为:
free-m
完成!
#查看内存数量命令:
复制代码
代码为:
dmidecode|grep-A16"MemoryDe​​vice$"
Tofreepagecache:
echo1/proc/sys/vm/drop_caches
To释放dentriesandinodes:
echo2/proc/sys/vm/drop_caches
释放pagecache,dentriesandinodes:
echo3/proc/sys/vm/drop_caches
sync
#It发布前最好同步一下,避免数据丢失。 由于LINUX的内核机制,一般不需要特意释放已用的缓存。 这种缓存的内容可以提高读写文件和文件的速度。
#首先说一下如何用free命令查看内存。
代码如下:
$free
totalusedfreesharedbufferscached
Mem:15350529189286161240251282964
-/+buffers/cache:833452701600
Swap:000
#第一行从全局角度描述了系统使用的内存状态
Total——总物理内存
/>Usage——已使用的内存,通常这个值比较大,因为这个值包括了缓存+应用程序使用的内存。
Free-完全未使用的内存
Shared-由应用程序共享的内存
Buffer-缓存,主要使用。 用于目录、inode值等。 (ls您将在大型目录中看到此值增加。 )
cached-缓存,用于打开文件
total=used+free
Used=buffers+cached(也可能是addshared)
第二行描述了应用程序的内存使用情况。
第一个值代表-buffers/cache。 -应用程序使用的内存量减去缓存值。
最后一个值代表+buffers/cache。 -这是应用程序可用的所有内存大小和缓存值的总和。
-buffers/cache=used-buffers-cached
+buffers/cache=free+buffers+cached
第三行表示swap的使用。
Used——已使用
Free——未使用
手动运行sync命令(说明:运行sync命令sync子例程。 系统如果需要停止,运行sync命令来检查文件系统的完整性,sync命令将所有未写入的系统缓冲区写入磁盘,包括修改的i节点、延迟的块I/O和读取)
echo3/proc/sys/。 vm/drop_caches
cat/proc/sys/vm/drop_caches
3
配置/proc/sys/vm!/drop_cachesvalue3
#/proc/sys/vm/drop_caches用法解释如下
代码如下:
/proc/sys/vm/drop_caches(Linux2.6.16))
写入此文件会导致内核从内存中清除干净的缓存
并从内存中删除目录项和节点
释放该内存。
要删除页面缓存,请使用echo1。 /proc/sys/vm/drop_caches
要删除目录和节点,请使用
echo2/proc/sys/vm。 /drop_caches;
tofreepagecache,dentriesandinodes,useecho3
/proc/sys/vm/drop_caches。
因为这是一个非破坏性操作,而且是一个脏对象
#原文链接:http://levi.cg.am/?p=3224