Ich dachte, ich hätte verstanden, wie MacOSX den Speicher verwaltet, aber in letzter Zeit bin ich von seiner Leistung verblüfft. Hier ist die Situation:
Kann mir jemand einen Hinweis darauf geben, warum MacOSX den inaktiven Speicher nicht für die Prozesse freigibt, die ihn benötigen, und stattdessen auf Paging zurückgreift? Gibt es auch eine geeignete Möglichkeit, die Speicherverwaltung durch das System zu beeinflussen?
Ich habe auf meinem Rechner festgestellt, dass Mac OS X etwas langsam ist, um die richtigen Dinge auszulagern.
Wann immer ich etwas besonders speicherhungriges mache, beende ich oft ein paar Anwendungen, um ihm zu helfen. Safari ist ein riesiger Speicherfresser, wenn es eine Weile läuft und ganz oben auf der Liste der zu beendenden Anwendungen steht. In meinem Fall war dies der Fall, als ich versuchte, VMWare Fusion ohne genügend tatsächlichen RAM auszuführen.
Sie kennen das wahrscheinlich, aber hier sind ein paar Links zur Apple-Dokumentation, die die Speichernutzung und den virtuellen Speicher unter OS X beschreiben:
http://support.apple.com/kb/ht1342
Hier ist die Erklärung, die gegeben wird: Die inaktive Liste enthält Seiten, die sich derzeit im physikalischen Speicher befinden, auf die aber kürzlich nicht zugegriffen wurde. Es ist schwierig, eine genaue Definition dessen zu erhalten, was dies bedeutet, aber es scheint einen Dateisystem-Cache sowie tatsächlich inaktiven Speicher zu enthalten.
Inaktiver Speicher ist wahrscheinlich eine schwierige Sache auf einem interaktiven GUI-gesteuerten Betriebssystem, in dem ein Benutzer jederzeit zu jeder laufenden Anwendung wechseln kann und die Bereitstellung von Reaktionsfähigkeit in dieser Art von Situation wichtig ist ... aber die Kehrseite davon ist das In einer Situation wie Ihrer weiß das Betriebssystem nicht genau, was das Richtige ist.
Es ist möglich, (einen Teil) des inaktiven Speichers zu löschen, indem Sie den Purge- Befehl verwenden. Dies muss möglicherweise durch die Installation der CHUD-Tools installiert werden, aber Sie haben es möglicherweise bereits installiert. Ich habe nicht versucht, den Purge-Befehl zu verwenden, also YMMV ...
Ich habe ein bisschen geschwärmt und vielleicht Ihre Frage beantwortet oder auch nicht. Nachdem ich das alles aufgeschrieben hatte, fand ich auf dieser Seite eine weitere Frage, die viele der gleichen Informationen enthält, die ebenfalls hilfreich sein könnten.
purge
Befehl ist genau das, wonach ich gesucht habe. Ich hatte die Support-Artikel in Apples KB gefunden, aber sie waren nicht besonders nützlich.MacOS gibt den inaktiven Speicher frei, aber nur, wenn es wirklich nötig ist. Dieser "inaktive Speicher" kann tatsächlich ein Speicher sein, von dem der Kernel glaubt, dass er ein Kandidat für das Auslagern ist - aber er hat sich noch nicht entschieden, da noch mehr Zeit vergeht, ohne dass auf den inaktiven Speicher verwiesen wird (stattdessen konzentriert er sich auf das Auslagern des Speichers das ist wirklich weniger wahrscheinlich, bald wieder verwendet zu werden). In einem solchen Fall wird das "Löschen" des inaktiven Speichers tatsächlich dazu führen, dass Ihre Leistung leidet (da diese häufig verwendeten Seiten wieder von der Festplatte eingelesen werden müssten, bevor Ihr Programm mit der Ausführung fortfahren kann).
purge
ist für Entwickler nützlich, um die Startbedingungen einer Anwendung zu simulieren – zB um zu sehen, wie lange es dauert, bis eine Anwendung nach einem Systemstart oder einer langen Pause zum ersten Mal läuft. Für den typischen Benutzer purge
ist es nicht sehr nützlich (und führt tatsächlich zu vorübergehenden Leistungseinbußen).
jhfrontz