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

清理linux内存

  • 内存
  • 2024-08-20 23:29:16
  • 195

一、Linux系统中的内存清理和释放命令归纳#清理步骤
#清理前使用内存
代码如下:
free-m
#开始清理
代码如下:
echo1/proc/sys/vm/drop_caches
#清理后的内存使用情况
代码如下:
free-m
完成!
#显示内存的命令number:
复制代码
代码如下:
dmidecode|grep-A16"MemoryDe​​vice$"
Tofreepagecache:
echo1/proc/sys/vm/drop_caches
要释放dentries和inodes:
echo2/proc/sys/vm/drop_caches
要释放pagecache、dentries和inodes:
echo3/proc/sys/vm/drop_caches
sync
#最好在发布前进行同步,以防止数据丢失。由于LINUX中的内核机制,一般不需要刻意释放已使用的缓存。这些缓存的内容可以提高文件和文件的读写速度。
#下面说说如何使用free命令显示内存
代码如下:
$free
totalusedfreesharedbufferscached
Mem:15350529189286161240251282964
-/+buffers/cache:833452701600
Swap:000
#第一行从全局角度描述了系统使用的内存的状态:
Total——总物理内存
used——使用的内存,一般情况下,这个值会比较大,因为这个值包括了cache+应用程序使用的内存
Free-完全未使用的内存
Shared-应用程序共享的内存
Buffers-缓存,主要用于目录、inode值等(您可以看到该值在较大的目录中增加)
cached-用于打开文件的缓存
total=used+free
used=buffers+cached(maybeaddsharedalso)
第二行描述了应用程序的内存使用情况:
第一个值代表-buffers/cache-应用程序使用的内存量,used减去缓存值
最后一个值代表+buffers/cacheCaching-应用程序可用的所有内存量,free加上缓存值
-buffers/cache=used-buffers-cached
+buffers/cache=free+buffers+cache
第三行表示swap的使用情况:
Used——已使用
Free——Unused
手动执行同步命令(说明:同步命令如果必须停止系统,请运行Sync命令以确保文件系统的完整性。同步命令将所有未写入的系统缓冲区写入磁盘,包括修改的i节点、延迟的块I/O以及读取和写入。映射文件)
echo3/proc/sys/vm/drop_caches
cat/proc/sys/vm/drop_caches
3
!value为3
#下面解释/proc/sys/vm/drop_caches的使用
代码如下:
/proc/sys/vm/drop_caches(sinceLinux2.6.16)
执行写入此文件会导致内核清除内存中的缓存、牙齿和令牌,从而释放内存要释放页面缓存,请使用@eecho1/proc/sys/vm/drop_caches;要释放牙齿和。图标,使用echo2/proc/sys/vm/drop_caches;
tofreepagecache,dentriesandinodes,useecho3
/proc/sys/vm/drop_caches。
因为这是一个破坏性的过程,并且会破坏对象
#原文链接:


二、如何为linux释放内存和缓存在Linux系统下,我们一般不需要释放内存,因为系统已经对内存管理得很好了。但凡事都有例外。有时内存会被缓存占用,导致系统使用SWAP空间,影响性能。
Linux系统的缓冲机制相当先进,它针对的是dentry(在VFS中用于加速文件路径名到inode的转换)、BufferCache(用于读写磁盘块)和PageCache(用于读写。文件inode)来执行缓存操作。然而,在执行大量文件操作后,缓存最初会耗尽内存资源。但实际上我们的文件操作已经完成,这部分缓存已经不再使用了。此时,我们是否可以只看到缓存占用的内存空间呢?
所以,我们在Linux下还是要手动释放内存,这实际上就是释放缓存的操作。
要达到释放缓存的目的,首先要了解关键配置文件/proc/sys/vm/drop_caches。该文件记录了缓存释放参数。默认值为0,表示不释放缓存。该值可以是0到3之间的任意数字,代表不同的含义:
0–不要丢弃
1–释放页面缓冲区
2–释放假体和索引节点
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
要删除swap,只需先关闭swap即可,使用:
#swapoff-a
然后启用swap,因为只是删除,并不意味着不使用swap:
#swapon-a