我正在運行一個python腳本來做一些統計,實際使用的記憶體很低,大約10% free -m
。重點是我的腳本應該從檔案中進行大量讀取,所以我想知道Linux記憶體快取是否有任何機制導致了這個問題?echo 1 >> /proc/sys/vm/drop_caches
有效,但似乎是手動的。 我怎樣才能減少內存成本,並且不會對讀取文件產生不良影響?
答案1
Linux 核心會自動將檔案快取在記憶體中以提高效率。這不是一件壞事。運行時,free -m
您將在右側看到快取中使用的記憶體量。如果應用程式需要內存,內核將釋放一些快取。您不應該嘗試自己管理它。
答案2
我不認為你在這裡有真正的問題。
為什麼你關心使用了多少總記憶體?有什麼傷害嗎?
Linux 盡可能有效率地使用記憶體。如果您有大量可用內存,並且正在讀取大量文件,它將使用可用內存來快取這些文件。如果您有大量活動內存,則用於快取的內存會少得多。這就是它應該工作的方式。如果您根本不想使用內存,請將晶片從電腦中取出。
在一些不常見的情況下,大量快取可能會很糟糕。也許突發讀取總是發生在突發記憶體分配之前。也許您的具體案例意味著沒有任何可能的好處,您需要擠出最後 0.1% 的效能成本。也許您使用的嵌入式系統所使用的 RAM 的使用壽命有限。如果您有這樣的情況,請告訴我們這是什麼情況。