2010-11-03 29 views
2

我有一個長時間運行的進程,我懷疑有內存泄漏。我使用top來監視每個進程的內存級別,沒有任何內容使用超過總內存的15%。該機器具有4GB的RAM,並且該過程從超過3GB的空閒時間開始。該過程本身對幾MB數據進行非常繁重的自定義計算。它需要100%的單核。如何判斷內存在Linux中的位置

隨着時間的推移,記憶消失,但top並不怪我長時間運行的過程。相反,「緩存」和「緩衝區」內存增加,「空閒」內存減少到2MB。這個過程最終完成了它的工作並且沒有問題退出,但是記憶永遠不會回來。我應該擔心還是這種「正常」?除top之外是否還有其他工具可以提供更深入的瞭解?

謝謝。

回答

5

這很正常。您的進程正在對緩存在內存中的文件進行操作。如果存在「內存壓力」(來自其他程序的需求),則該緩存內存將被放棄。第一次我寫了一個X部件來顯示有多少內存是「免費」的時候,我花了一段時間才習慣了空閒內存對你沒有好處的想法:最好全部使用在做一些種類緩存直到其他地方需要!

+0

謝謝,非常有見地。你知道一些能幫助人們學習這些概念的好資源嗎?這是我聽說過的第一個「內存壓力」? – User1 2010-11-03 04:25:18

+0

[FreeBSD操作系統的設計和實現](http://www.amazon.com/gp/product/0201702452?tag=benjac-20)將帶您從設計決策直到代碼。我想推薦一個較舊的*更短的版本,比如4.3BSD操作系統的設計和實現,但它似乎已經絕版了。 – 2010-11-03 04:31:26

+0

聽起來不錯! FreeBSD是否處理類似於Linux 2.6的內存? – User1 2010-11-03 15:59:43

相關問題