![RAM使用异常](https://linux22.com/image/208431/RAM%E4%BD%BF%E7%94%A8%E5%BC%82%E5%B8%B8.png)
这几天来,一个奇怪的问题一直困扰着我。我的 Fedora 占用的 RAM 比平常多,空闲时通常的 RAM 使用量约为 2 GB,但它会上升到超过 5.2 GB,这主要导致我的 DE 崩溃。我检查了正在运行的进程列表,没有看到列表显示任何进程占用超过 300 MB 的 RAM,即使我将它们加起来,进程的总 RAM 使用量加起来也不会达到 5 GB。我在论坛上找不到修复的相关答案。如果有人可以提出修复建议,我将不胜感激。谢谢 发行版:Fedora 36 内核:5.18.11-200.fc36.x86_64 DE:GNOME 42.3.1
答案1
确定每个进程拥有多少 RAM 是很棘手的。您在各种工具中看到的数字通常显示内存有多少映射的进入进程的地址空间。但是,某些内存可能会映射到多个进程,因此当您将它们的使用情况相加时,不应添加共享部分。一些内存可能被许多进程共享。某些内存可能会被映射到进程两次。
因此,每个进程的“内存使用量”仅在单独考虑每个进程时有用,但不应该添加它——您永远不知道共享了多少内存以及共享深度。这是不正确将这些值相加,结果将是过度估计图像与计算机中的任何真实事物都不对应。另一方面,如果您只想对进程特有的内存进行求和,那么您就会陷入极大的低估。所以永远不要对它们求和。依赖于系统报告的“可用”内存值。
另一个广为人知的误解是,Linux 认为“空闲”内存在技术上不是您应该担心的事情。你应该看的是可用的记忆;从技术上讲,这就是“空闲加缓冲区加缓存”。缓冲区和缓存将根据应用程序请求立即释放;这只是“内存未被使用,所以 Linux 使用它来加速计算机,否则更多的内存只会浪费金钱,但它承诺一旦有人需要它就会释放它”。另请参阅此处的解释:https://www.linuxatemyram.com/。
内存不足导致的崩溃是由内核的内存不足杀手(OOM-killer)引起的。如果是罪魁祸首,它一定会把自己的行为dmesg
和情况记录在案。简而言之,如果确实内存不足,它会选择“最差”的 fat 进程并杀死它,释放内存。如果您怀疑内存溢出,请务必检查这一点。如果没有记录 OOM 杀手操作,则您的崩溃是不是因为内存使用率高。