2
我有使用共享內存的多進程應用程序。我試圖在我的應用程序中檢測內存泄漏。我在/ proc/$ PID/SMAP共享內存中的Shared_dirty vs Private_dirty
2b51cd2b2000-2b53b8aa4000 rw-s 00000000 00:09 17151225 /dev/zero (deleted)
Size: 8052680 kB
Rss: 31608 kB
Shared_Clean: 1524 kB
Shared_Dirty: 25736 kB
Private_Clean: 0 kB
Private_Dirty: 4348 kB
Swap: 0 kB
Pss: 6945 kB
這是我分配的共享內存中找到這個。(尺寸告訴這是一個這是由我的mmap分配)
我試圖理解在這種情況下Shared/Private之間的區別,內存本身是共享的。看到''的標誌。
如果任何人可以解釋Shared_Clean與Private_Clean Shared_Dirty與Private_Dirty之間在共享內存上的區別。
Private_Dirty是否必然意味着進程正在使用mmap,或者有沒有其他更直接的方法可以將進程寫入映射中的頁面? – Masseman
@Masseman:當然不是,堆棧也是一個映射,其本質往往完全是'Private_Dirty'。 – caf