Windows
為什麼 Linux 不像 Windows 那樣保護記憶體?
當我執行一段使用大量記憶體的程式碼時,如下所示:
a = "1" while True:a+=a
在 Windows 10 中,它給了我
memory error
並且電腦保持安全,但在 Linux 中執行此程式碼會導致凍結並耗盡記憶體。為什麼不給我memory error
?
Linux 核心 OOM 處理非常差,Linux 核心開發人員已明確表示應在使用者空間解決此問題:https ://lkml.org/lkml/2019/8/4/15
至於使用者空間,您可以免費使用:
cgroups
limits.conf
earlyoom
,nohang
以及類似的應用程序:https ://github.com/hakavlad/nohang像 Fedora 這樣的發行版現在
earlyoom
預設包含在內。