„free -m“ zeigt, dass ein Programm unter Linux 322 M RAM verwendet, „top“ zeigt jedoch, dass es 58 M verwendet. Warum?

„free -m“ zeigt, dass ein Programm unter Linux 322 M RAM verwendet, „top“ zeigt jedoch, dass es 58 M verwendet. Warum?

Ich habe eine 512M-VPS-Box auf Burst.net, die keinen Swap hat. Mein Betriebssystem ist CentOS 6.x x64.

Beim Start waren nur 58 MB RAM verwendet.

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

Jetzt habe ich ein Java-Programm gestartet (das mit Python beginnt), dann 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

Oh, es wurde (380-58=322 M) RAM verwendet.

Aber wenn ich 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                            

Ich sehe, dass Java und Python nur 48m+10m = 58MRAM verwendet haben. Warum free -mwird angezeigt, dass sie verwendet haben 322M? Wo ist der fehlende RAM?

Antwort1

In Ihrem Fall scheint Ihnen „free -m“ nur die gesamte RAM-Nutzung mitzuteilen (wahrscheinlich, weil Sie sich in einem VPS befinden), einschließlich Puffer und Caches, die oft für die zusätzliche RAM-Nutzung verantwortlich sind, die nicht von laufenden Programmen genutzt wird. Haben Sie dieLinux hat meinen RAM aufgefressenSeite?

Antwort2

topzeigt Details zu jeder Instanz oder jedem Prozess an, freetut dies aber nicht.

Bei der Nutzung freeweiß man nicht genau was läuft, man bekommt nur eine Zusammenfassung.

verwandte Informationen