找不到什麼佔用了所有內存

找不到什麼佔用了所有內存

伺服器記憶體約24GB。運行free -g發現內存被用完了

             total       used       free     shared    buffers     cached
Mem:            23         23          0          0          0         18
-/+ buffers/cache:          4         19
Swap:           56          2         53

top然後我做了一些研究,看看當時是什麼耗盡了所有這些記憶體M。但看起來該%MEM列中的記憶體相當空閒。

我可以做什麼來釋放一些記憶體?這是一個計算伺服器,所以最好不要重新啟動電腦。

答案1

您誤解了 的輸出free。您發佈的內容顯示您有 19 GB 的可用 RAM。您看到的 23 GB 被系統用作緩存,但仍然可供應用程式使用。這也是為什麼top顯示記憶體為空閒的原因..

Linuxatemyram.com以獲得更詳細的解釋

答案2

您可以參考這個問題用於確定確切的可用記憶體。

  • 預設情況下作業系統有一個非常有效率記憶體管理進程應該釋放正在運行的電腦上的所有快取記憶體。

  • 然而當談到快取記憶體,作業系統有時可能會決定快取記憶體正在使用並且需要,這可能會導致記憶體相關問題並最終耗盡可用記憶體。為了對抗它,你可以強制作業系統釋放任何儲存的快取記憶體。

要立即釋放內存,您可以簡單地這樣做,

free && sync && echo 3 > /proc/sys/vm/drop_caches && free

編輯:您也可以將此命令作為 cronjob 運行。

作為@mj特納指出,不太建議這樣做,因為它可能會導致效能瓶頸。

相關內容