進程是否可以分配快取內存,以便內核可以在必要時佔用它?

進程是否可以分配快取內存,以便內核可以在必要時佔用它?

我具體詢問的是 Linux,但顯然,適用於一般 Unix(即 POSIX 或類似)的答案會更好。

Linux 使用空閒記憶體(即尚未分配給進程的記憶體)來快取檔案系統元資料(也可能是其他內容)。當進程請求額外記憶體時,這些快取會縮小以騰出空間。

我的問題:是否有一種方法可以讓應用程式分配僅用作快取的記憶體?也就是說,在進行分配時,知道當可用記憶體不足且其他行程的記憶體分配無法得到服務時,允許核心以某種方式奪取該記憶體區域的控制權。

答案1

你也許可以使用madvise(2)為此MADV_FREE——它將頁面標記為可回收,但不一定立即刪除它們,並且可以讀回資料。如果您恢復所有零(每頁),您就會知道頁面已消失。

相關內容