linux释放内存空间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux释放内存空间相关的知识,希望对你有一定的参考价值。

释放内存前先使用sync命令做同步,以确保文件系统的完整性,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。

drop_caches的值可以是0-3之间的数字,代表不同的含义:

  • 0:不释放(系统默认值)
  • 1:释放页缓存
  • 2:释放dentries和inodes
  • 3:释放所有缓存

# 释放内存前先使用sync命令做同步,以确保文件系统的完整性
sync

# 释放所有缓存
echo 3 > /proc/sys/vm/drop_caches

释放完内存后改回去让系统重新自动分配内存

# 恢复默认值
echo 0 >/proc/sys/vm/drop_caches

linux何时自动释放内存

参考技术A 是后者“当有某程序需要占用大内存时linux会自动释放cache”
linux的理念是内存空着不用白不用,因此会使用空闲内存来做buffer和cache。
我的一台虚拟机运行了JBOSS,在运行一段时间后,查看内存使用情况:
[root@JBOSS
~]#
free
-m
total
used
free
shared
buffers
cached
Mem:
3949
2928
1021
0
308
1278
-/+
buffers/cache:
1341
2608
Swap:
4094
0
4094
可以看出,内存已用2928M,但实际除去
buffers/cache后实际只使用了1341M。你若不管它,内存是不会释放的,而且也没必要释放。

以上是关于linux释放内存空间的主要内容,如果未能解决你的问题,请参考以下文章

linux啥情况就会使用到交换区swap,比如剩下多少内存,还有其他哪些因素

Swap交换分区--continue

linux增加swap空间

linux何时自动释放内存

linux系统添加swap虚拟内存与删除配置方法

Linux内核空间内存申请函数kmallockzallocvmalloc的区别