Ist inaktiver Speicher nicht eine Verschwendung von Ressourcen?


87

Ich suche nach Erklärungen zur Speichernutzung auf meinem Computer, insbesondere im Hinblick auf das Beispiel in diesem Screenshot:

Speichernutzung

Ich verstehe, was ist Freeund Activebedeutet.
Aber was bedeuten Wiredund Inactive?

Insbesondere inactive, warum verwendet es so viel Speicher für etwas, das wir nicht verwenden?

Antworten:


142

Inaktives Gedächtnis bekam einen schrecklichen Schlag wegen eines beschissenen Namens. Es hätte so etwas heißen sollen wie "Mach deinen Mac beim zweiten, dritten und vierten Mal wirklich schnell", außer das ist auch ein schrecklicher Name.

Apple hat den Aktivitätsmonitor neu geschrieben, als er einige neue Funktionen einführte und komprimierten Speicher hinzufügte. Einige dieser Funktionen gelten daher nicht mehr für MacOS, bei denen "Inaktiver Speicher" nicht angezeigt wird. Dies gilt jedoch weiterhin für die Mac OS X-Speicherverwaltung, wie im Vergleich dazu dokumentiert Version von Activity Monitor: https://support.apple.com/en-us/HT201538

Hier ist, wie ich jemandem, der das Konzept des virtuellen Speichers unter OS X noch nicht kennt, die Dinge erklärt habe:

  • Kabelgebunden : Das System kann ohne diese RAM-Größe nicht ausgeführt werden (niemals vertauscht).
  • Aktiv: Programme verwenden diesen Speicher jetzt oder in den letzten Sekunden wirklich
  • Inaktiv: Dinge, die Programme von der langsamen Festplatte oder anderswo gelesen haben und nie wieder benötigen. Ingenieure wissen es besser, Sie kehren in wenigen Minuten zu Facebook zurück oder starten Word neu, nachdem Sie es beendet haben. Das Gleiche passiert immer wieder auf Computern.
  • Free: Totally Wasted RAM - Das System benötigt nur ein oder zwei MB, um kurzfristige Zuweisungsanfragen abzudecken. Bei den meisten Zuweisungen wird lediglich ein Teil des inaktiven Arbeitsspeichers verwendet, indem er aktiv / verkabelt zugewiesen wird und die Informationen darüber entfernt werden, was er früher gespeichert hat.

Das Problem tritt auf, wenn Free + Inactive weniger als ungefähr 1/3 der Gesamtmenge ausmacht und die Dinge dann sehr langsam werden können.

Inaktiver Speicher ist Bonusgeschwindigkeit / Double Duty RAM. Es ist in Kürze kostenlos, erledigt aber auch wiederholte Aufgaben viel, viel schneller, wenn das System richtig geraten hat und etwas im RAM gespeichert hat, das Sie erneut ausführen werden. Es ist schneller als das Auslagern von Speicher, da es bereits in den Arbeitsspeicher geladen ist und Dinge beschleunigt, wenn das virtuelle Speichersystem gute Vermutungen anstellt.

Wenn Sie sich fragen, ob RAM ein Problem ist, können Sie W + A koppeln, um ein neues Programm / eine neue Aufgabe zu verlangsamen, und F + I, um a zu beschleunigen neues Programm / neue Aufgabe. Je mehr F + I Sie haben, desto mehr neue Programme können Sie starten, bevor der Arbeitsspeicher auf das Auswechseln angewiesen ist, um den zugewiesenen Speicherplatz zu nutzen.

Sie müssen nicht wirklich wissen, wie Swap funktioniert, da ich es oben erwähnt habe. Grundsätzlich schreibt das System, wenn ein Programm inaktiv ist und tagelang (oder stundenlang) nicht verwendet wurde, diesen RAM auf die Festplatte, anstatt das Programm zu beenden. Auf diese Weise kann das System alle Arten von Dingen im Zusammenhang mit der Speicherverwaltung mischen und handhaben und verhindert, dass jedes Programm untereinander sprechen muss, um zu bestimmen, wer weniger Speicher benötigt, wenn das System leer wird.

Hier ist ein Beispiel aus der Praxis, wie inaktiver RAM verwendet wird.

  1. Beenden Sie alle Apps und stellen Sie sicher, dass die beiden Apps, die wir testen, beim Anmelden nicht auf automatischen Start eingestellt sind
  2. Starten Sie Ihren Mac neu
  3. Starten Sie Ihren Aktivitätsmonitor und überwachen Sie den gesamten RAM
  4. Zeit, wie lange es dauert, um Anwendung A zu starten (MS Word wäre eine gute Wahl)
  5. Beenden Sie A
  6. Zeit wie lange es dauert um Application B zu starten (Adobe sowas wäre auch gut)
  7. Beenden Sie B
  8. Zeit, wie lange der zweite Start von A dauert
  9. Beenden Sie A
  10. Zeit B's zweiter Start.
  11. Zeit A startet das dritte Mal mit B am Laufen.

Sie sollten beim zweiten / dritten Start eine dramatische Beschleunigung feststellen, wenn das System lernt, die für die Ausführung dieser beiden Apps erforderlichen Dinge im inaktiven RAM zu belassen.


In Ihrem Fall bedeutet die Summe aus "Verkabelt" und "Aktiv", dass wahrscheinlich ein gewisser Austausch auf die Festplatte stattfindet und Ihr Mac nicht so schnell wie möglich ist, da Ihr inaktiver RAM nicht groß genug ist, um alle Dinge zu speichern, die Sie möglicherweise zur Wiederverwendung benötigen . Wenn Sie ein schnelles SSD-Laufwerk haben, ist diese RAM-Zuweisung in Ordnung. Anstatt sich zu verlangsamen, sobald weniger als die Hälfte Ihres RAM F + I beträgt, können Sie die Anzahl der Arbeitsspeicher für F auf etwa 1/4 reduzieren + Ich bevor ich merkliche Langsamkeit sehe. Diese Richtlinien sind allgemein gehalten. Sie sollten sie sich ansehen vm_stat 15oder ein ähnliches Intervall, um sicherzustellen, dass ein kontinuierliches und mittleres Auswechseln des Volumens Ihren Mac nicht verlangsamt.


9
Wow sehr vollständige Antwort für Newcomer wie mich. Vielen Dank, sehr geschätzt :)
GusDeCooL

6
Yup - ich kann für alle antworten - ein für alle Mal können die Leute es bearbeiten, um es besser zu machen und du bekommst deine Antwort. Ziemlich coole Idee für eine Website, auf der Leute interessante Fragen stellen können. :-)
bmike

3
Beeindruckend! Schöne Antwort!
Duci9y

3
Ich wünschte, sie hätten es in meiner OS-Klasse so erklärt.
Styfle

2
Die Bereinigung von @cvsguimaraes erfolgt nicht sofort. chat.stackexchange.com/transcript/message/12107920#12107920
Graham Perrin

6

Die Zahl, die am wichtigsten ist, um festzustellen, ob Ihr Mac überlastet ist, ist die Zahl "Auslagerungen". Im Aktivitätsmonitor in Mavericks wird dies nicht mehr angezeigt. Die Informationen werden jetzt in "Verwendet tauschen:" angezeigt.

Auslagerungen bedeuten, dass das Betriebssystem festgestellt hat, dass nicht genügend RAM verfügbar ist, um alle angeforderten Anwendungen und Prozesse auszuführen. Was es dann tut, ist, dass es "Seiten" zu Festplattenteilen des Speichers ausgibt, von denen es feststellt, dass sie nicht aktiv verwendet werden. Dies bedeutet, dass der RAM-Speicher (schnell) in den Festplattenspeicher (langsam) geändert wird. Wenn dies häufig geschieht, weil viele Anwendungen ausgeführt werden und der Benutzer zwischen Anwendungen wechselt, gibt es viele Auslagerungen und Einlagerungen.

Wenn die Anzahl der Auslagerungen zunimmt, sollten Sie Maßnahmen ergreifen.


4

Das Problem auf meinem Mac ist, dass der "inaktive" Speicher scheinbar nie gelöscht wird, es sei denn, ich führe eine manuelle Löschung im Befehlsfenster durch. Es wird aufgebaut und aufgebaut, bis ich ein Popup-Fenster erhalte, in dem ich aufgefordert werde, Anwendungen zu beenden. Selbst nachdem ich alle meine Anwendungen beendet habe, habe ich immer noch zu viel inaktiven Speicher, um irgendetwas auszuführen. Auf meinem Mac, auf dem die neueste Version von Mountain Lion ausgeführt wird, ist es NICHT wahr, dass inaktiver Speicher zurückgefordert wird, wenn der freie Speicher knapp wird. Entweder habe ich irgendwo eine App, die einen Teil des inaktiven Speichers blockiert, der niemals freigegeben wird, oder das iOS hat einen Fehler. (Ich habe 8 GB physischen Speicher ... das sollte reichen!)


2
Ich bin bei dir, Ernie ... in Mac OS 10.6 und 10.7 auf einem MacBook Pro und Mac Pro schleicht sich der inaktive Speicher ein, und das Betriebssystem beginnt zu tauschen (entsprechend "Bild ein" und "Bild aus") und Das System wird angehalten. Der inaktive Speicher scheint niemals wiederhergestellt zu werden. Ich muss "purge" verwenden, um den inaktiven Speicher wiederzugewinnen und mein System wieder aktiv zu machen.
Eric

2
Woher kommt dieses Popup-Fenster? Wie ist die Erinnerungssituation, von der berichtet wird, vm_statwenn es passiert? Was macht Sie so sicher, dass es "zu viel" inaktiven Speicher geben kann, um irgendetwas auszuführen? Meiner Meinung nach ist dies alles ein Hörensagen, der im Code, den Sie kennen, keine Rückendeckung hat und tatsächlich im Kernel läuft.
Kuba Ober

2
Entspricht Ihre Speicherzuordnung dem, was Gus präsentiert hat? Hier geht es um ein kabelgebundenes Gigabyte und eineinhalb aktive Gigabyte. Die inaktive / freie Zuteilung scheint mir in dieser Situation in Ordnung zu sein. Vielleicht würden Sie eine zweite Frage stellen, die genau beschreibt, in welcher Situation die Dinge zusammenbrechen.
bmike

2

Dank all der Poster und Kommentatoren war dies ein lehrreicher und nützlicher Thread für mich. Meine jüngsten Erfahrungen könnten für jemanden von Nutzen sein. Ich verwende meinen Mac Mini mit OS X10.8.1 und 16G RAM ausschließlich für Prototyping-Software, die an anderer Stelle ausgeführt wird. Ich kann Ihnen versichern, dass ich nicht "in ein paar Minuten zu Facebook zurückkehren oder Word nach dem Beenden neu starten" werde - das mache ich stattdessen auf meinem MacBook.

Meine Aufgabe war es, eine große Menge von Daten zu mischen, da dies sehr zeitaufwändig ist. Daher sollte ein möglichst großer Datenblock auf einen Schlag gelesen, dort verarbeitet und dann auf die Festplatte zurückgeschrieben werden Wiederholen Sie den Vorgang, bis er abgeschlossen ist. Dies dauert einige Stunden. Was ich sehe, ist, dass jedes Mal, wenn ich einen neuen Datenblock einlese, der inaktive Speicher springt - ich nehme an, dass die System-KI annimmt, dass ich den alten Block wieder verwenden möchte, was ich nicht tue - und den freien Gedächtnis fällt.

Nach einigen Iterationen dieses Vorgangs wird der freie Speicher auf ein paar MB reduziert, der inaktive Speicher wird ein paar MB mehr freigegeben, und schließlich wird der inaktive Speicher nach einigen Minuten des Hin- und Herschaltens zwischen freiem und inaktivem Speicher freigegeben ein paar GB auf einmal. Alles ist so, wie @bmike es beschreibt, und sowohl vm_stat 15 als auch Activity Monitor zeigen 0 Auslagerungen an.

Außer vielleicht nicht ganz. Einige Male ging es schwimmend voran, ich machte mich auf den Weg zu einem Kaffee oder Abendessen und beobachtete den Prozess nicht. Was nicht passieren sollte, und der Prozess warf plötzlich eine Schiffsladung von Auslagerungen ab und wurde langsamer. Stellen Sie sicher, dass es wahrscheinlich mein beschissener Code ist, der das Problem verursacht, aber ich wünschte, ich könnte den inaktiven Speicher ausschalten, nur um diese Quelle der Variabilität zu beseitigen. Ist es kaputt? Das würde ich überhaupt nicht sagen, aber ich würde sagen, dass die Speicherverwaltung nicht für meinen Anwendungsfall optimiert ist.


0

Inaktiver Speicher, der von kürzlich aktiven und beendeten Apps verwendet wird. OS X behält es für den Fall bei, dass der Benutzer das Programm erneut öffnen möchte. In diesem Fall muss OS X keinen Speicher verlagern, der die Leistung beschleunigt. Wenn Sie das Programm nicht erneut öffnen, wird der Speicher des Inaktiven nach einer Weile freigegeben oder verschoben. (C)

Diese Funktion ist cool, wenn Sie viel RAM haben, aber wenn es nicht so ist, ist es ziemlich ärgerlich. Eigentlich dreht sich alles um Apfelsachen. Wenn Sie ein leistungsstarkes Gadget oder einen Mac haben, ist alles cool. Wenn Sie jedoch älter werden, werden alle Funktionen langsamer.

Also musst du spezielle Tricks anwenden, um es zu verwalten.

Für inaktiven Speicher gibt es einen Befehl purge, um ihn freizugeben.


-3

Im Grunde ist es kaputt. Inaktiver Arbeitsspeicher sollte automatisch "gelöscht" werden, wenn der freie Arbeitsspeicher niedrig ist. Wozu dient RAM für zuvor geöffnete Anwendungen, in der Hoffnung, dass der Benutzer es erneut öffnet? Die Tatsache, dass der freie Arbeitsspeicher niedrig ist, weist darauf hin, dass vorhandene ACTIVE-Anwendungen möglicherweise nicht genügend Arbeitsspeicher haben und JETZT austauschen. GB RAM für geschlossene Anwendungen beizubehalten, ist einfach dumm. Laut Apples eigener Beschreibung sollte inaktiver Arbeitsspeicher automatisch gelöscht oder ausgeliehen werden, wenn der freie Arbeitsspeicher niedrig ist. Dies ist eindeutig nicht der Fall.


3
Virtuelle Speichersysteme verschwenden große Mengen an freiem RAM. Wenn ein Programm nach einer Speicherzuweisung fragt, baut der Kernel mehr virtuellen Speicher auf und verteilt ihn wie Süßigkeiten. Nur wenn ein Programm diesen Speicher mit tatsächlichen Daten füllt, muss das System Platz im RAM für diese Operation schaffen. Dieser "Raum schaffen" zieht aus dem freien und dann inaktiven Speicher - und die Verzögerung, um inaktiven Speicher freizugeben, ist unermesslich gering. Die von Ihnen beschriebene Bereinigung ist genau das, was passiert. Sie implizieren lediglich, dass das System die Bereinigungsarbeit im Vorfeld ausführen sollte, wenn das System faul ist, und dies nur dann, wenn dies erforderlich ist.
bmike

@bmike Aber würde das nicht bedeuten, dass, wenn kein freier RAM mehr vorhanden ist und ich eine neue App starte, der inaktive RAM-Anteil abnimmt und der aktive steigt? Dies ist eindeutig nicht der Fall und meiner Erfahrung nach wird das System extrem langsam, wenn kein freier RAM mehr vorhanden ist, obwohl Gigabyte an inaktivem RAM vorhanden sind. Das System scheint es vorzuziehen, die Festplatte auszutauschen, bevor es inaktive RAMs wiederverwenden möchte.
CodingFriend1

4
@ codingFriend1 Lassen Sie uns genauer sein - wie viele Seiten frei in betrachten vm_statSie "kein freier RAM mehr"? Wenn der Mac "langsam" ist, wofür zählt das Ein- und Ausblättern vm_stat 1? Jedes Mal, wenn ich dies auf einem Problemsystem beobachte, möchte ich, dass es vm_stat 15in einem Terminalfenster ausgeführt wird (oder dass ich mich im Dateisystem anmelde), damit ich genau weiß, wie die Paging-Aktivität aussieht, wenn ich überlege, ob / wann ich Dinge wie das abstimmen werde Pager. Dieses Beispiel verfügt über 100 MB freien Arbeitsspeicher, sodass es selbst unter Paging-Druck wahrscheinlich nicht verfügbar ist.
bmike

-4

Im Wesentlichen inaktiver Speicher beschleunigt das Öffnen früher geschlossener Prozesse. Wenn Sie feststellen, dass das Mac OS zu viel Speicherplatz belegt, den Sie von den Dutzenden von Registerkarten, die Sie in Safari oder Chrome geöffnet haben, nicht wirklich benötigen, verwenden Sie einfach den Befehl 'Bereinigen' im Terminal. Verwenden Sie in OS X Mavericks stattdessen einfach 'sudo purge' (Sie müssen Ihr Passwort eingeben). Es spart wertvolle Sekunden, wenn Sie etwas erneut öffnen müssen, aber wenn Sie ein RAM-intensives Spiel spielen oder eine RAM-hungrige Anwendung öffnen möchten, empfehle ich auf jeden Fall die Verwendung des Löschbefehls.


2
Wie unterscheidet sich dies von anderen Antworten?
user151019
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.