当我运行一段使用大量内存的代码时,如下所示:
\na = "1"\nwhile True:a+=a\nRun Code Online (Sandbox Code Playgroud)\n在 Windows\xc2\xa010 中,它给了我memory error并且计算机仍然安全,但是在 Linux 中运行此代码会导致冻结并耗尽内存。为什么它不给我memory error?
Linux 内核 OOM 处理相当差,Linux 内核开发人员已明确表示应在用户空间中解决此问题: https: //lkml.org/lkml/2019/8/4/15
至于用户空间,您可以自由使用:
cgroupslimits.confearlyoom,nohang以及类似的应用程序: https: //github.com/hakavlad/nohang像 Fedora 这样的发行版现在earlyoom默认包含在内。
2022 年 10 月更新:
如果您使用的是足够新的发行版,现在systemd-oomd必须为您启用。如果您没有安装它,您可以earlyoom手动安装(必须在大多数发行版的存储库中可用或可以编译)。
| 归档时间: |
|
| 查看次数: |
331 次 |
| 最近记录: |