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

Ami*_*ahi 0 memory windows

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

\n
a = "1"\nwhile True:a+=a\n
Run Code Online (Sandbox Code Playgroud)\n

在 Windows\xc2\xa010 中,它给了我memory error并且计算机仍然安全,但是在 Linux 中运行此代码会导致冻结并耗尽内存。为什么它不给我memory error

\n

Art*_*nov 5

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

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

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

2022 年 10 月更新:

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