今天,同事发现其中一台服务器占用过高,标配32G内存,但是可用只有200M左右了。已经严重影响其他程序的正常运行。通过命令发现,服务器上用于测试的Hadoop和FLink占用内存过高(单机版)。
为了保证其他程序的正常运行,我们需要临时把这些服务给Kill掉,以释放更多的内存。but,进程已经结束掉了,但是内存还是居高不下。这是怎么回事?原来是内存没有得到释放,那么如何将Linux的内存进行释放呢?方法如下:
内存释放前
执行命令
echo 3 > /proc/sys/vm/drop_caches
命令解释
PS:在这个文件中,我们记录了内存释放的参数
0 不释放
1 释放页缓存
2 释放dentries和inodes
3 释放所有缓存
释放结果
free -m 得到是可用内存26G。
其实,Linux的内存管理机制做得非常好,一般会自动处理,但是有时候内存会被缓存占用掉。在特殊情况下我们需要手动来对内存进行释放。