手把手教你 Linux如何释放内存
在生产过程中,一些Java模块会比较残忍的吃系统内存,然后如果这个模块写的比较挫,产生的垃圾就会比较多,如果Linux系统的内存释放也不会及时,然后恶性循环,最后就把进程卡死,但是服务器是不可以down机的,所以这个时候就需要我们运维出来,手动的释放内存。
首先,我们登陆一台服务器,#free -h看一下目前的情况:
然后#cat /proc/sys/vm/drop_caches,会看到里面的值是0,0是不释放的意思。
0 – 不释放
1 – 释放页缓存
2 – 释放dentries和inodes
3 – 释放所有缓存
(本文事例采用3)
#sync,将系统缓存区中的脏数据写入磁盘中,包括已修改的i-node、已延迟的块I/O和读写映射文件。
#echo 3 > /proc/sys/vm/drop_caches
#sysctl -p,这样不用重启服务器也可以生效。出现下面的一连串文字之后,再#free -h看一下:
效果