次のように多くのメモリを使用するコードを実行するとき:
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
ユーザースペースは以下を自由に使用できます。
cgroups
limits.conf
earlyoom
とnohang
同様のアプリケーション:https://github.com/hakavlad/nohang
Fedoraのようなディストリビューションはデフォルトでearlyoom
含まれています。
2022年10月に更新されました:
新しい十分なディストリビューションを使用している場合は、systemd-oomd
今すぐ有効にする必要があります。インストールしていない場合は、earlyoom
手動でインストールできます(ほとんどのディストリビューションストアまたはコンパイルで利用可能である必要があります)。