メモリ制限でsystemdを実行すると、プログラムがクラッシュするのはなぜですか?

メモリ制限でsystemdを実行すると、プログラムがクラッシュするのはなぜですか?

私は、さまざまなプログラムのさまざまな方法を使用してリソース管理を制御します。私が使うときシステム実行中~のため絶頂(GNU画像処理プログラム)、写真のメモリ要件が制限(つまり、私が設定した300MB)を超えると、プログラムがクラッシュして閉じます。お持ちですか?システム実行中衝突やメモリの制限なしに安全に使用するには?

次のコマンドを使用してショートカット(デスクトップファイルなど)でsystemd-runを使用して起動します。

systemd-run --scope -p MemoryLimit=300M gimp-2.8 %U

ベストアンサー1

プログラム(gimpなど)がコンパイルされ、すべての動作がプリセットされます。自分でメモリを割り当てることができないと、どの操作も実行できません。プログラムがアクセスできないメモリにアクセスしようとするたびに、プログラムはそのメモリ(たとえば、gimpの場合は画像を保存するために使用されます)として実行されると予想するため、終了する必要があります(セグメントエラーのため)。

もちろん、画像は少ないメモリで保存できますが、これはGIMPのコードにはなく、単にメモリへのGIMPアクセスを拒否しても効率的ではありません。

メモリ不足の問題が発生した場合の良い解決策は次のとおりです。ファイル交換。これは、メモリへのプログラムのアクセスを制限するのではなく、代わりに使用されていないメモリをディスク(RAMではなく)に保存し、必要に応じてディスクから取り出します。

おすすめ記事