我有一個巨大的內存消耗Java過程,我試圖弄清楚他在用這些內存做什麼。所以,我在做這個PID一PMAP -x,這裏是一片結果:smaps中「Private_Dirty」記憶的含義是什麼?
Address Kbytes RSS Dirty Mode Mapping
0000000000001000 4 0 0 rw--- [ anon ]
0000000000400000 48 0 0 r-x-- java
000000000050b000 4 4 4 rw--- java
0000000003b9d000 264 224 212 rw--- [ anon ]
0000000003bdf000 2199556 1887992 1830160 rw--- [ anon ]
000000396c800000 112 108 0 r-x-- ld-2.5.so
000000396ca1c000 4 4 4 r---- ld-2.5.so
[...]
ffffffffff600000 8192 0 0 ----- [ anon ]
---------------- ------ ------ ------
total kB 7072968 4382820 4270104
正如你可以在地址3BDF000看到有是2199556千字節用骯髒的1830160的映射。
在/ proc/10139/smaps,對能與更多的細節看出來:
03bdf000-89fe0000 rw-p 03bdf000 00:00 0
Size: 2199556 kB
Rss: 1887996 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 57832 kB
Private_Dirty: 1830164 kB
Swap: 231996 kB
Pss: 1887996 kB
因此,我想知道這個骯髒的記憶是什麼?我猜這些頁面不必寫入磁盤,爲什麼他們被稱爲髒?