Virtual-Memory
Malloc 和分頁
當使用者程序呼叫 malloc(n) 時,是否有任何物理頁分配給該程序?我相信沒有,因為 malloc 從堆中分配。它是否正確?
對於 Linux,我相信您的問題的簡短回答是“通常不分配物理頁面”。這稱為“記憶體過度使用”,您可以在上面找到大量文件。Unix 變體對 malloc-time 的實際物理頁面分配有不同的策略。基於 4BSD 的系統傳統上不會過度使用,與
chill
程序結合使用(找不到參考)是無窮無盡的樂趣。chill
分配和持有盡可能多的記憶體。因為 SunOS(基於 4.2BSD)總是為 any 分配物理頁面malloc()
,所以一個普通使用者可以分配所有 RAM 並導致其他人無休止地分頁。對於 linux,您可以找出系統的策略:
cat /proc/sys/vm/overcommit_memory
應該給出“0”、“1”或“2”,分別表示“啟發式過度使用”、“總是過度使用”和“從不過度使用”。