Simon Szustkowski

Ein Blog über alles, was mir gerade so durch den Kopf geht

Mar 22, 2010

iFreeMem

Jeder Nutzer von Apfelcomputern kennt das Problem. Man ist grad mittendrin in irgendeinem Workflow, und das System stoppt auf einmal und beginnt zu beachballen. Weiterarbeiten ist erstmal nicht möglich. Sowas nervt.

Hintergrund ist: Sobald Anwendungen gestartet werden, reservieren sie sich Arbeitsspeicher. Die Anwendung kann nun mit dem Arbeitsspeicher arbeiten (im Activity Monitor als “aktiv” geflaggt), oder ihn weiterhin beanspruchen (im Activity Monitor als “inaktiv” geflaggt). Sobald man nun die Anwendung beendet, wird der reservierte RAM nicht ad hoc freigegeben, sondern erst noch vom System als reserviert markiert, sodass die Anwendung bei einem Neustart schneller auf die benutzten Ressourcen zugreifen kann (flag auf “reserviert”). Der vierte Bereich (“frei”) ist wirklich unbenutzter RAM, den nach der letzten Garbage Collection noch nie benutzt wurde.

De jure ist der freie RAM also die Summe aus reserviert und frei, erst wenn dieser Bereich gegen 0 tendiert, beginnt das System zwingend zu swappen. In Wirklichkeit sieht das aber anders aus. Wenn neue Anwendungen Zugriff auf den RAM fordern, verteilt das System erst den freien RAM, der ja garantiert frei ist. Sobald der allerdings verbraucht wird, wird dem zwingenden swappen vorgebeugt, und das System prüft den reservierten RAM, ob er denn wirklich noch benötigt wird wird (paging). Währenddessen wird dann auch mal der Beachball ausgepackt, weil der RAM parallel abgegriffen wird, d.h. alle Speicherzellen kriegen simultan den Abfragebefehl, und es wird gegengerechnet.

Sobald klar ist, was freigegeben werden kann, wird der Beachball wieder eingepackt, und der neue freie RAM an die neuen Prozesse vergeben.

Soweit ja ganz sinnig. Aber wenn der User grad z.B. sich im dritten Weltkrieg mit den Pixeln in Photoshop befindet, ist eine Beachballpause nervig. Man wünscht sich, die Garbage Collection kontrollierter ablaufen lassen zu können.

Hier kommt iFreeMem ins Spiel. Das Tool quartiert sich zunächst in der Menüleiste ein, um dort mithilfe eines Kuchendiagramms die aktuelle RAM-Belegung anzuzeigen. In der leopardigen Schwarzweißdarstellung unterscheidet es dabei nur zwischen “frei” vs. “alles andere”, allerdings kann man auch den tigermäßigen Bonbonlook aktivieren, mit dem vier verschiedenfarbige verschiedengroße Kuchenstücke angezeigt werden.

Wenn man nun grad drauf und dran ist, Photoshop zu öffnen, und aber gerade erst die gigantisch große iTunes-Library geschlossen hat, sieht man, dass der freie RAM auf ein sehr schmales Kuchenstück reduziert ist. Nun kann man den Prozess starten. Durch Klick auf den Kuchen öffnet man ein Menü, in dem die 4 Speicherbereiche noch einmal detailliert dargestellt werden. Der Button “Optimize Memory” ist der wichtigste. Drückt man ihn, fängt das Programm an, möglichst viel Speicher für sich selbst zu beanspruchen. Sobald das geschehen ist, gibt es den Bereich wieder frei. Komplett frei, nicht reserviert. Und, zack, hat man wieder viel mehr freien Speicher.

Im Prinzip ist das nur der Prozess “Neues Programm starten bis RAM voll, Garbage Collection abwarten, freuen” in kurzer Form, da sofort der komplette RAM belegt wird. Der Vorteil ist allerdings, dass man diesen Prozess nun triggern kann, und in einer Leiste angezeigt wird, wie weit der Prozess schon ist. Außerdem wird man nicht aus dem Workflow rausgeworfen, da man den Prozess eben für ne Zigaretten- oder Pinkelpause anwerfen kann.

Gerade bei älteren Maschinen unter 2GB RAM, auf denen aber eine von den Leopardendistributionen schon läuft, werden dieses Tool zu schätzen wissen. Der allgemeine Nachteil ist allerdings, dass es Geld kostet. Leider. Eigentlich sollte Apple solch eine Funktion schon ab Werk in ihren Betriebssystemen mitliefern.