6
我有一個應用程序,它的內存隨着我運行的測試用例而增加。這顯然導致我相信我的應用程序正在泄漏內存。所以我在我的應用程序上運行valgrind,並且出人意料地發現它沒有泄漏。私密髒內存可能是泄露內存的指示嗎?
我不知道爲什麼我的進程的內存泄漏,所以我看着我的過程 的smaps文件及以下,如果我發現了什麼有趣的
08426000-42f56000 rwxp 00000000 00:00 0 [heap]
Size: 961728 kB
Rss: 960252 kB
Pss: 960252 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 960252 kB
Referenced: 960252 kB
Anonymous: 960252 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
爲了對這些數字我做了一些研究的意義關於Private_Dirty內存,大多數文章指出這是由於內存昂貴而尚未釋放的內存。
這似乎表明,這些只是應用程序釋放的內存,但仍然被操作系統阻擋。
有人能幫我更好地理解private_dirty嗎?這可以表明我有內存泄漏嗎?
感謝
請問內存清理步驟之後和程序退出之前變得越來越小?這聽起來像是你正在堅持一些與測試案例相關的東西,這會導致記憶被保留。你是直接使用共享指針還是處理內存管理? – Jiminion
有什麼私人骯髒的描述[這裏](http://stackoverflow.com/a/17596928/2096401):基本上你的過程已經「使用」(寫入)的內存,以便它需要保存如果換出來爲另一個進程騰出空間。本身並不表明你正在泄漏記憶。 – TripeHound
也許你正在分配大量的小內存然後釋放。我無法預測太多,但是它與內存碎片有什麼關係? –