![為什麼 ps 指令中的記憶體 (rss) 與 top 指令中看到的記憶體不同?](https://rvso.com/image/170281/%E7%82%BA%E4%BB%80%E9%BA%BC%20ps%20%E6%8C%87%E4%BB%A4%E4%B8%AD%E7%9A%84%E8%A8%98%E6%86%B6%E9%AB%94%20(rss)%20%E8%88%87%20top%20%E6%8C%87%E4%BB%A4%E4%B8%AD%E7%9C%8B%E5%88%B0%E7%9A%84%E8%A8%98%E6%86%B6%E9%AB%94%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
在 MacOS Catalina 上,當檢查進程的記憶體使用情況時,我發現該ps
命令顯示的 RSS 值與頂部顯示的記憶體使用情況不同:
$> ps e -o command,vsize,rss,%mem|grep "myapplication"|head -n 1
myapplication 4594896 51364 0.3
RSS -> 51364
top
PID COMMAND %CPU TIME #TH #WQ #PORT MEM
48106 myapplication 115.7 09:06.12 69/1 1 101 37M+
內存 -> 37M
為什麼會有這樣的差異?
更新:
IntelliJ 流程的另一個範例:
top -pid 357
PID COMMAND %CPU TIME #TH #WQ #POR MEM PURG CMPRS PGRP PPID STATE BOOSTS %CPU_ME %CPU_OTHRS UID FAULTS COW MSGSENT MSGRECV SYSBSD
357 idea 2.6 03:16:46 112 1 925 4906M 0B 1583M 357 1 sleeping 0[2884] 0.00000 0.00000 281451937 28337096 54627 8404446+ 2733245+ 156093159+
熱門節目4906M
ps aux
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
xxxxxxx 357 3.6 14.5 180050484 2430728 ?? S 1:44PM 196:48.70 /Applications/IntelliJ IDEA.app/Contents/MacOS/idea -psn_0_73746
ps顯示RSS2430728(知識庫)
答案1
最可能的原因是 ps 顯示常駐內存,而 top 顯示總內存或虛擬內存(例如包括換出和共享)。
對此有很多疑問,包括https://stackoverflow.com/questions/7880784/what-is-rss-and-vsz-in-linux-memory-management但這就是為什麼它們在這裡具有不同的值。