How much memory does this java process consumes? pmap and top's result are conflicted

20,853

You are confusing virtual memory and physical one.

pmap is reporting virtual memory statistics (413588K used) which match top VIRT column (403m). This is including data shared with other processes and other pages stored on disk.

Use pmap -x to get RAM usage statistics (RSS column).

The java process current RAM usage is reported by top RES column, 103 MB.

Share:
20,853

Related videos on Youtube

hugemeow
Author by

hugemeow

http://serverfault.com/search

Updated on September 18, 2022

Comments

  • hugemeow
    hugemeow over 1 year

    I just want to know the exact amount of memory one process consumes.

    pgrep java -l
    21786 java
    

    The total memory I have is 1GB:

    [root@home tmp]# free -m
                 total       used       free     shared    buffers     cached
    Mem:          1024        952         71          0          0          0
    -/+ buffers/cache:        952         71
    Swap:            0          0          0
    

    java uses 413588K, that is more than 40% of memory being used by java

    pmap 21786
    
    ......
    
    b7fc2000      4K r-x--  /usr/lib/locale/en_US.utf8/LC_IDENTIFICATION
    b7fc3000      4K rwx--    [ anon ]
    b7fc4000      4K r-x--    [ anon ]
    b7fc5000    108K r-x--  /lib/ld-2.5.so
    b7fe0000      4K r-x--  /lib/ld-2.5.so
    b7fe1000      4K rwx--  /lib/ld-2.5.so
    bf85b000     84K rwx--    [ stack ]
     total   413588K
    
    
    
    
    top - 23:40:54 up 22 days,  6:17,  5 users,  load average: 0.02, 0.04, 0.03
    Tasks: 100 total,   2 running,  98 sleeping,   0 stopped,   0 zombie
    Cpu(s):  1.7%us,  1.3%sy,  0.0%ni, 97.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:   1048800k total,   975180k used,    73620k free,        0k buffers
    Swap:        0k total,        0k used,        0k free,        0k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    21786 mirror    19   0  403m 102m 8712 S  0.3 10.0   0:10.52 java   
    

    Why does top result only show 10% of the memory is used by java process?

    So the result of top and pmap is conflicted, the fommer indicates that more than 40% of the system memory is used by java process, but the result of top indicates that only 10% of the memory is used by java process.

    Which one is correct?

    How is one to know the exact amount of memory used by one process?