我正在运行此命令来查看按 RAM 使用情况列出的所有进程:
ps aux | awk '{print $6/1024 " MB\t\t" $11}' | sort -n
最大的一个是178MB
但当我运行时,glances
我发现 RAM 已使用 96%(总共 10GB)
当我按 MEM% 排序时,最高的是我的节点服务器,为 1.8%
在我看来好像有一些隐藏进程占用了大量内存。
我正在运行一个虚拟机。
OOM killer 正在关闭我的进程,这就是我发现这个问题的方式。
答案1
这是有意为之。内存是一种“要么使用,要么丢失”的资源。你无法将其保存以备后用。因此,现代操作系统会尽可能地使用尽可能多的内存。
如果你在想,“我现在想释放那块内存,以便以后使用”,那就再仔细想想吧。你现在可以使用该内存和稍后再使用。这里不存在痛苦的权衡。
比如说,你运行一个程序,程序运行完毕。操作系统可以将该程序保留在内存中,以防你再次运行该程序。如果这样做,也不会造成任何损害。如果程序不再运行,内存可以稍后丢弃。但是如果你再次运行该程序,I/O 就会被节省,因为它不必从磁盘读取。因此,操作系统宁愿将最近执行的程序的副本保留在内存中,也不愿让该内存空闲。当然,这块内存与任何进程都没有关联。
答案2
使用free
命令。您可能看不到太多报告Free
,但可能会看到很多报告Available
。man free
会告诉您差异。