一般系统是不会自动释放内存的 关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。它的值可以为0~3之间的任意数字,代表着不同的含义:
0:0是系统默认值,默认情况下表示不释放内存,由操作系统自动管理
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
实操:
所以根据上面的说明,分别将1,2,3这3个数字重定向到drop_caches中可以实现内存的释放,一般释放内存都是重定向3到文件中,释放所有的缓存
那么下面举个例子,比如这里只释放页缓存,首先使用 free -h 查看当前内存剩余
当前内存剩余570M左右,另外buff/cache是1.3G,根据上面说的现在真正的剩余内存应该是1.8G左右,首先写缓存到文件系统:
sync
然后执行下面命令释放内存(页缓存buff/cache):
echo 1 》 /proc/sys/vm/drop_caches
执行完之后,再次查看内存剩余:
会发现内存被释放了,可用内存确实变为1.8G左右
到这里内存就释放完了,现在drop_caches中的值为1,如果现在想让操作系统重新分配内存,那么设置drop_caches的值为0即可:
echo 0 》 /proc/sys/vm/drop_caches
另外需要注意的是,在生产环境中的服务器我们不要频繁的去释放内存,只在必要时候清理内存即可,更重要的是我们应该从应用程序层面去优化内存的利用和释放,经常清理内存可能只是暂时屏蔽的应用程序中的一些bug,所以更重要的是程序的调优,其他的交给操作系统来管理
责任编辑人:CC
-
Linux
+关注
关注
88文章
11628浏览量
217989 -
内存
+关注
关注
9文章
3173浏览量
76118
发布评论请先 登录
Linux Swap交换空间详解:Android编译内存不足?这样扩充立竿见影
WebGL/Canvas 内存泄露分析
RTThread线程退出后rt_malloc动态创建的资源没有释放怎么解决?
使用w5500通信使用wiz包的时候,突然拔掉网线,如何释放网络资源?
在使用rt_free释放内存时触发了断言,怎么解决?
接收Ymedom文件后释放内存报错,重启怎么解决?
使用lv_label_set_text释放内存没对齐是什么原因导致的?
HarmonyOS优化应用内存占用问题性能优化一
SE5 ffmpeg例程内存不释放的原因?
使用rt_free释放内存时触发了断言怎么解决?
信息安全管理必备!Linux系统使用SSH登录root账号的方法
hyper v 内存,hyper v 内存设置的操作步骤和方法是什么?

Linux释放内存的方法
评论