2009-10-09 60 views
0

我有一個內存泄漏某處,但它似乎並沒有與我的程序有關。我基於這樣一個事實做出這個大膽的陳述:一旦我的程序終止,無論是通過段錯誤,退出還是中止,內存都不會被恢復。如果我的程序是罪魁禍首,我會認爲MMU會收回所有東西,但事實並非如此。ARM/Linux內存泄漏:終止後用戶程序是否可以保留內存?

我的問題是:

在一個小的Linux系統(64 MB RAM),運行僅使用堆棧內存和malloc()打了幾個電話的程序,是什麼原因導致可我看也看到內存中運行下來,一旦我的程序終止,請停留下來?

一個相關的問題是here


這一切的時候有問題的代碼是指導其標準輸出,標準錯誤到一個文件之後開始。幾個小時後,它終止了「分段故障」。對/ proc/meminfo的一個快速(幼稚?)看來表明沒有太多可用內存,所以我認爲有東西在泄漏。

+0

您能否解釋一下您所看到的情況,使您相信程序在終止後會保留內存。我猜你是在誤解其他一些情況。 – 2009-10-09 19:07:26

+0

這也是我的猜想。我最近指出要查看由塊層緩存的內存。 – Jamie 2009-10-09 19:28:18

回答

0

看來我沒有內存泄漏(見here),但它確實使我的一些新的問題......


事實證明,寫入塊設備可以使用相當一堆物理記憶;在我的系統中,只有64兆,因此將數百個Megs寫入USB驅動器相當多地增加了緩存,活動和非活動內存池。

當設備被卸載後,這些內存池會立即釋放到可用內存池。

我的分段錯誤的確切原因仍然是一個小小的謎團,但我知道可以通過更好地理解虛擬內存資源來減少發生,特別是在使用塊設備時。