为什么Linux不像Windows那样保护内存?

为什么Linux不像Windows那样保护内存?

当我运行一段使用大量内存的代码时,如下所示:

a = "1"
while True:a+=a

在 Windows 10 中,它使我的memory error计算机保持安全,但在 Linux 中运行此代码会导致冻结并耗尽内存。为什么它不给我memory error

答案1

Linux 内核 OOM 处理能力相当差,Linux 内核开发人员已经明确表示这个问题应该在用户空间中解决:https://lkml.org/lkml/2019/8/4/15

至于用户空间,您可以自由使用:

像 Fedora 这样的发行版现在earlyoom默认包含在内。

2022 年 10 月更新:

如果您使用的是足够新的发行版,现在systemd-oomd必须为您启用。如果您没有安装它,您可以earlyoom手动安装(必须在大多数发行版的存储库中可用或可以编译)。

相关内容