`free -m` показывает, что программа на Linux использует 322 МБ оперативной памяти, а `top` показывает, что она использует 58 МБ. Почему?

`free -m` показывает, что программа на Linux использует 322 МБ оперативной памяти, а `top` показывает, что она использует 58 МБ. Почему?

У меня есть 512M vps box на burst.net, и у которого нет swap. Моя os - centos 6.x x64.

Когда он только начинал, он использовал всего 58 МБ оперативной памяти.

$ free -m:
             total       used       free     shared    buffers     cached
Mem:           512         58        454          0          0          0
-/+ buffers/cache:         58        454
Swap:            0          0          0

Теперь я запустил программу Java (которая запускается Python), затем free -m:

$ free -m
             total       used       free     shared    buffers     cached
Mem:           512        380        131          0          0          0
-/+ buffers/cache:        380        131
Swap:            0          0          0

О, он использовал (380-58=322M) оперативной памяти.

Но когда я top:

top - 20:37:01 up 67 days,  3:19,  2 users,  load average: 0.08, 0.04, 0.00
Tasks:  20 total,   2 running,  18 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    524800k total,   388300k used,   136500k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  DATA COMMAND                             
20288 freewind  17   0  936m  48m  11m S  0.0  9.4   0:02.07 799m java                                
20287 freewind  17   0  179m  10m 3404 S  0.0  2.1   0:00.08 7260 python                              
20200 root      15   0 91732 3940 2948 S  0.0  0.8   0:00.03  932 sshd                                
20145 root      15   0 91640 3832 2948 S  0.0  0.7   0:00.02  840 sshd                                
 1474 root      18   0 80296 2312  696 S  0.0  0.4   4:06.86 1684 sendmail                            

Я вижу, что java+python использует только 48m+10m = 58Mram. Почему free -mпоказывает, что они использовали 322M? Где отсутствует ram?

решение1

В вашем случае 'free -m', похоже, сообщает вам только об общем использовании ОЗУ (вероятно, потому что вы находитесь в VPS), включая буферы и кэши, которые часто учитывают дополнительное использование ОЗУ, не занятое запущенными программами. Вы читалиLinux съел мою оперативную памятьстраница?

решение2

topпоказывает подробную информацию по каждому экземпляру или процессу, но freeне делает этого.

При использовании freeвы не знаете точно, что именно работает, вы получаете только сводку.

Связанный контент