Memory

超出交換 - 會發生什麼?

  • February 1, 2020

在具有 512 MB RAM 和 348 MB 交換空間的 Debian VM 機器上,如果我在編輯器中打開一個 1 GB 的文件並出現記憶體不足會怎樣?

會不會系統崩潰?或者如果沒有,Linux 將如何處理這個問題?

安裝Swapspace是否明智,因此如果需要,將自動和動態地創建足夠的交換空間?

sudo apt-get install swapspace

這取決於您正在執行的設置,特別是記憶體過量使用(/proc/sys/vm/overcommit_memory;詳情請參閱man 5 proc)。

如果禁用記憶體過量使用,編輯器(以及可能同時嘗試的其他程序)分配記憶體的嘗試將失敗。他們將從系統呼叫中獲得失敗結果。由每個程序來處理這個問題,但不幸的是,一個常見的結果是程序崩潰。例如,編輯器也可能拒絕打開文件。

如果啟用了記憶體過量使用,那麼請求記憶體的系統呼叫很可能會成功。在這種情況下,當實際訪問記憶體時,核心會注意到它的記憶體不足,並殺死一個程序以回收記憶體。該過程可能是也可能不是編輯器。選擇由系統上每個程序的(oom_score幾個核心啟發式的結果)和oom_score_adj(配置)控制。這些也在那個 proc(5) 聯機幫助頁中。

引用自:https://unix.stackexchange.com/questions/135114