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 = 58M
RAM verwendet haben. Warum free -m
wird 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
top
zeigt Details zu jeder Instanz oder jedem Prozess an, free
tut dies aber nicht.
Bei der Nutzung free
weiß man nicht genau was läuft, man bekommt nur eine Zusammenfassung.