`free -m` mostra que um programa no Linux usa 322M de RAM, mas `top` mostra que usa 58M, por quê?

`free -m` mostra que um programa no Linux usa 322M de RAM, mas `top` mostra que usa 58M, por quê?

Eu tenho uma caixa vps de 512M no burst.net e que não tem swap. Meu sistema operacional é centos 6.x x64.

Quando começou, ele usava apenas 58M de RAM.

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

Agora iniciei um programa java (que inicia em python), então 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

Ah, ele usou (380-58 = 322M) de memória RAM.

Mas quando eu 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                            

Vejo que o java + python usou apenas 48m+10m = 58Mmemória RAM. Por que free -mprogramas eles usaram 322M? Onde está o carneiro desaparecido?

Responder1

No seu caso, o 'free -m' parece informar apenas sobre o uso total de RAM (provavelmente porque você está em um VPS), incluindo buffers e caches que geralmente são responsáveis ​​pelo uso extra de RAM não utilizado pela execução de programas. Você leu oLinux comeu minha RAMpágina?

Responder2

topestá mostrando detalhes de cada instância ou processo, mas freenão mostra.

Quando você usa freevocê não sabe exatamente o que está rodando, apenas recebe um resumo.

informação relacionada