Arbeitsspeicher manuell freigeben

Linux verfügt über ein internes Speichermanagement, das den Arbeitsspeicher selber aufräumt und freigibt. Manchmal läuft def Arbeitsspeicher dennoch voll.

# free -h
             total       used       free     shared    buffers     cached
Mem:          7,8G       6,6G       1,2G       152M       495M       2,7G
-/+ buffers/cache:       3,5G       4,3G
Swap:          16G         0B        16G

Dann helfen manuelle als Root, um den Arbeitsspeicher wieder zu leeren.

# sync ; sync ; sync ; echo 3 > /proc/sys/vm/drop_caches

Dieser Befehl sorgt dafür, dass sämtlicher Inhalt, der sich noch im Cache befindet, auf die Festplatte geschrieben wird. Dann werden mit dem echo-Befehl die Pagecaches, Dentries und Inodes ebenfalls geleert, wie nachfolgend gezeigt.

# free -h
             total       used       free     shared    buffers     cached
Mem:          7,8G       3,4G       4,4G       152M       1,4M       525M
-/+ buffers/cache:       2,9G       4,9G
Swap:          16G         0B        16G

Wichtig ist dabei, dass dies nur dann ausgeführt wird,  sofern noch genug Speicher zur Verfügung steht. Ansonsten kann dieses Vorgehen dazu führen, dass der Rechner abstürzt.

Nicht freigegebener Swap-Speicher kann mit diesem Befehl freigegeben werden:

sync ; sync ; sync ; swapoff -a && swapon -a