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

linux释放内存命令

  • 内存
  • 2024-05-11 03:09:35
  • 3412

一、如何手工释放linux内存1.正常情况
先说free命令:
[root@server~]#free-m
totalusedfreesharedbufferscached
Mem:2491638601094
-/+buffers/cache:58191
Swap:5110511
其中:
总内存
used已使用内存数
free空闲内存量
多个进程共享的内存总量
cacheBufferCache和缓存的PageCache磁盘缓存的大小
-buffer/cache中的内存数量:used--buffers--cached
+buffer中的内存/缓存数量:free+buffers+cached
缓存可用内存=freememory+buffers+cached。
有了这个背景,我们可以看到我当前的容量使用量是163MB,可用空间是86MB,缓存和缓存分别是10MB和94MB。
那么让我们看看如果复制文件,内存会发生什么。
[root@server~]#cp-r/etc~/test/
[root@server~]#free-m
totalusedfreesharedbufferscached
Mem:249244408174
-/+buffers/cache:62187
Swap:5110511
之后执行我的命令,已用空间为244MB,可用空间为4MB,缓存为8MB,缓存为174MB。天哪,它们都被缓存吃掉了。别担心,这是为了提高文件读取效率。
为了提高磁盘访问效率,Linux实现了一些复杂的设计。除了缓存(在VFS中用于加速文件路径名到inode的转换)之外,Linux还应用了两种主要的缓存。方法:BufferCache和PageCache。前者用于读写磁盘块,后者用于读写文件节点。这些缓存有效缩短了I/O系统调用(如读、写、接收数据)的时间。
有人说,一段时间后,Linux会自动释放已使用的内存。等待一段时间后,我们可以再次尝试免费使用,看看是否已经发布了?
[root@servertest]#free-m
totalusedfreesharedbufferscached
Mem:249244508174
-/+buffers/cache:61188
交换更改:5110511
似乎没有任何改变。(实际情况下,内存管理还涉及到Swap)
那么我可以手动释放这块内存吗?答案是肯定的!
2.手动释放缓存
/proc是一个虚拟文件系统。我们可以读写它作为与内核实体通信的手段。换句话说,您可以通过修改/proc中的文件来调整当前内核的行为。然后我们可以通过调整/proc/sys/vm/drop_caches来释放内存。它的工作原理如下:
[root@servertest]#cat/proc/sys/vm/drop_caches
首先,/proc/sys/vm/drop_caches的值,默认值为0。
[root@servertest]#sync
手动执行sync命令(说明:sync命令运行sync子例程。如果系统必须停止,则运行sync命令以确保文件系统完整性.sync命令将所有未写入磁盘的系统缓存写入,包括修改的i节点、延迟块I/O和读写映射文件)
[root@servertest]#echo3>/proc/sys/vm/drop_caches
[root@servertest]#cat/proc/sys/vm/drop_caches
3
将/proc/sys/vm/drop_caches值设置为3
[root@servertest]#free-m
totalusedfreesharedbufferscached
内存:249661820011
-/+buffers/cache:55194
交换:5110511
再次运行free命令,您将看到已用空间为66MB,可用空间为182MB,缓存为0MB,缓冲内存为11MB。那么缓存和缓存就被有效地释放了。


二、linux清理内存缓存命令查看缓存的命令
free-m
清除缓存的命令
echo1>/proc/sys/vm/drop_caches
echo2>/proc/sys/vm/drop_caches
echo3>/proc/sys/vm/drop_caches
echo0不释放缓存
echo1释放页面缓存“Linux应该这样学习”
ehco2dentry和inode释放缓存
echo3释放1和2中提到的所有缓存