Linux

如何在 *nix 系統上獲取每個程序使用的記憶體

  • May 11, 2022

我想知道,每個程序的記憶體使用量是多少。有沒有辦法做到這一點?我目前在 Ubuntu 上。

問題是,我的 PC 填滿了整個記憶體,然後當我需要 RAM 時才開始交換而不是釋放記憶體。不是理想的情況。知道什麼過程“需要”所有這一切都會有幫助。我懷疑 ESET AV 因為它的“好”是 -20 in htop. (是的,我需要 AV,不,這不是我的決定)

如您所見,有 16GB 的記憶體(根據 ,其中一小部分是 buff htop)。這是在大約 45 分鐘之後uptime。沒有任何交換,但有時它只是交換 5-7GB 的數據(當我啟動 VM 或類似的東西時)。

使用者名@主機名:[~]$ 免費 -h
可用的免費共享緩衝區/記憶體總數
記憶體:23Gi 6,4Gi 354Mi 4,6Gi 16Gi 11Gi
交換:23Gi 3,0Mi 23Gi

無論如何,即使沒有這個問題,確切地知道誰在記憶體,以及有多少是一個很好的資訊。

記憶體的使用不是按程序跟踪的——頁面存在於記憶體中,並且可以被系統上的任何程序使用。

掃描大量文件的程序(例如防病毒掃描程序或備份工具)通常會產生您所看到的症狀:如果交換可用,不斷讀取大量文件會驅逐其他頁面進行交換。您可以考慮以下幾點來提高系統的性能:

如果你想保留一個大的交換分區(例如用於休眠;目標是已安裝記憶體的 2/5,雖然這不是硬限制),你可以減少vm.swappiness以便核心會認為交換比逐出頁面記憶體頁面,因此傾向於減少其記憶體使用而不是增加其交換使用。

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