16

如何查看进程的内存占用量

 3 years ago
source link: https://www.lujun9972.win/blog/2018/09/18/%E5%A6%82%E4%BD%95%E6%9F%A5%E7%9C%8B%E8%BF%9B%E7%A8%8B%E7%9A%84%E5%86%85%E5%AD%98%E5%8D%A0%E7%94%A8%E9%87%8F/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

如何查看进程的内存占用量

严格来说,ps命令只能看到进程内存占用的百分比。

比如下面命令可以列出最耗内存的10个进程,并将所有进程按照内存占用量从高到底排序:

ps -o pid,user,%mem,command ax |sort -k3 -brn |head
2005 lujun99+ 17.8 /usr/lib/firefox/firefox
2066 lujun99+ 17.4 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 24973 -schedulerPrefs 0001,2 -parentBuildID 20180905135451 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 2005 true tab
2118 lujun99+ 11.6 /usr/lib/firefox/firefox -contentproc -childID 2 -isForBrowser -prefsLen 24973 -schedulerPrefs 0001,2 -parentBuildID 20180905135451 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 2005 true tab
2425 lujun99+  9.7 /usr/lib/firefox/firefox -contentproc -childID 3 -isForBrowser -prefsLen 28794 -schedulerPrefs 0001,2 -parentBuildID 20180905135451 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 2005 true tab
2435 lujun99+  9.0 /usr/lib/firefox/firefox -contentproc -childID 4 -isForBrowser -prefsLen 28794 -schedulerPrefs 0001,2 -parentBuildID 20180905135451 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 2005 true tab
1743 lujun99+  5.9 awesome
1218 lujun99+  5.4 /usr/bin/emacs --fg-daemon
1792 lujun99+  2.3 java -ea -client -Dfile.encoding=UTF-8 -Xmx320M -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -Dlog4j.defaultInitOverride=true -Djava.util.logging.config.file=/opt/nutstore/conf/java.logging.properties -Dnutstore.config.dir=/opt/nutstore/conf -Dnutstore.x64=True -Djava.library.path=/opt/nutstore/lib/native -cp /opt/nutstore/lib/guava-r07.jar:/opt/nutstore/lib/rdiff-java-0.1.0.jar:/opt/nutstore/lib/log4j-1.2.15.jar:/opt/nutstore/lib/jackson-mapper-asl-1.9.13.jar:/opt/nutstore/lib/juds-0.95-osx.jar:/opt/nutstore/lib/nutstore_client-3.4.4.jar:/opt/nutstore/lib/annotations.jar:/opt/nutstore/lib/commons-codec-1.4.jar:/opt/nutstore/lib/commons-cli-1.2.jar:/opt/nutstore/lib/sqlite4java.jar:/opt/nutstore/lib/inotify-java-2.0.2.jar:/opt/nutstore/lib/jackson-core-asl-1.9.13.jar:/opt/nutstore/lib/commons-collections4-4.1.jar:/opt/nutstore/lib/jsr305-3.0.1.jar:/opt/nutstore/lib/swt.jar nutstore.client.gui.NutstoreGUI --restart 1
1467 lujun99+  1.3 /usr/lib/Xorg -nolisten tcp :0 vt1 -keeptty -auth /tmp/serverauth.4mFBlelDHO
1747 lujun99+  0.9 fcitx

pmap命令

使用命令 pmap $pid 可以查看 $pid 这个进程及其依赖库的内存占用量(单位为K)

pmap $$
14931:   /bin/bash
000056317f317000    820K r-x-- bash
000056317f5e4000     12K r---- bash
000056317f5e7000     16K rw--- bash
000056317f5eb000     52K rw---   [ anon ]
0000563181464000    264K rw---   [ anon ]
00007f3ea01b5000   6036K r---- locale-archive
00007f3ea079a000      8K rw---   [ anon ]
00007f3ea079c000    416K r-x-- libncursesw.so.6.1
00007f3ea0804000   2044K ----- libncursesw.so.6.1
00007f3ea0a03000     20K r---- libncursesw.so.6.1
00007f3ea0a08000      4K rw--- libncursesw.so.6.1
00007f3ea0a09000    136K r---- libc-2.28.so
00007f3ea0a2b000   1324K r-x-- libc-2.28.so
00007f3ea0b76000    304K r---- libc-2.28.so
00007f3ea0bc2000      4K ----- libc-2.28.so
00007f3ea0bc3000     16K r---- libc-2.28.so
00007f3ea0bc7000      8K rw--- libc-2.28.so
00007f3ea0bc9000     16K rw---   [ anon ]
00007f3ea0bcd000      4K r---- libdl-2.28.so
00007f3ea0bce000      4K r-x-- libdl-2.28.so
00007f3ea0bcf000      4K r---- libdl-2.28.so
00007f3ea0bd0000      4K r---- libdl-2.28.so
00007f3ea0bd1000      4K rw--- libdl-2.28.so
00007f3ea0bd2000    268K r-x-- libreadline.so.7.0
00007f3ea0c15000   2048K ----- libreadline.so.7.0
00007f3ea0e15000     12K r---- libreadline.so.7.0
00007f3ea0e18000     24K rw--- libreadline.so.7.0
00007f3ea0e1e000     12K rw---   [ anon ]
00007f3ea0e67000      8K r---- ld-2.28.so
00007f3ea0e69000    124K r-x-- ld-2.28.so
00007f3ea0e88000     32K r---- ld-2.28.so
00007f3ea0e90000      4K r---- ld-2.28.so
00007f3ea0e91000      4K rw--- ld-2.28.so
00007f3ea0e92000      4K rw---   [ anon ]
00007ffe6c74a000    132K rw---   [ stack ]
00007ffe6c78f000     12K r----   [ anon ]
00007ffe6c792000      8K r-x--   [ anon ]
 total            14212K

如果觉得pmap使用单位为K不好看,也可以让它跟 numfmt 命令结合

pmap $$ |numfmt --header=1 --field 2-2 --to=iec --from iec
15514:   /bin/bash
00005599578b7000    820K r-x-- bash
0000559957b84000     12K r---- bash
0000559957b87000     16K rw--- bash
0000559957b8b000     52K rw---   [ anon ]
000055995938e000    264K rw---   [ anon ]
00007fcb2194e000    5.9M r---- locale-archive
00007fcb21f33000    8.0K rw---   [ anon ]
00007fcb21f35000    416K r-x-- libncursesw.so.6.1
00007fcb21f9d000    2.0M ----- libncursesw.so.6.1
00007fcb2219c000     20K r---- libncursesw.so.6.1
00007fcb221a1000    4.0K rw--- libncursesw.so.6.1
00007fcb221a2000    136K r---- libc-2.28.so
00007fcb221c4000    1.3M r-x-- libc-2.28.so
00007fcb2230f000    304K r---- libc-2.28.so
00007fcb2235b000    4.0K ----- libc-2.28.so
00007fcb2235c000     16K r---- libc-2.28.so
00007fcb22360000    8.0K rw--- libc-2.28.so
00007fcb22362000     16K rw---   [ anon ]
00007fcb22366000    4.0K r---- libdl-2.28.so
00007fcb22367000    4.0K r-x-- libdl-2.28.so
00007fcb22368000    4.0K r---- libdl-2.28.so
00007fcb22369000    4.0K r---- libdl-2.28.so
00007fcb2236a000    4.0K rw--- libdl-2.28.so
00007fcb2236b000    268K r-x-- libreadline.so.7.0
00007fcb223ae000    2.0M ----- libreadline.so.7.0
00007fcb225ae000     12K r---- libreadline.so.7.0
00007fcb225b1000     24K rw--- libreadline.so.7.0
00007fcb225b7000     12K rw---   [ anon ]
00007fcb22600000    8.0K r---- ld-2.28.so
00007fcb22602000    124K r-x-- ld-2.28.so
00007fcb22621000     32K r---- ld-2.28.so
00007fcb22629000    4.0K r---- ld-2.28.so
00007fcb2262a000    4.0K rw--- ld-2.28.so
00007fcb2262b000    4.0K rw---   [ anon ]
00007ffd184e9000    132K rw---   [ stack ]
00007ffd1859b000     12K r----   [ anon ]
00007ffd1859e000    8.0K r-x--   [ anon ]
 total               14M

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK