Mac OS X: Was verwendet mein "aktiver" Speicher?

10665
BastiBen

Ich verwende ein aktuelles MacBook Pro mit 8 GB RAM und nach ein paar Stunden Arbeit bei der Arbeit bemerke ich, wie viel "aktiver" Speicher wächst und wächst.

Wenn ich meinen Mac neu starte, sieht alles gut aus und es wird kaum Arbeitsspeicher benötigt. Aber nach ein paar Stunden sieht es so aus:

Screenshot

Wie Sie sehen, sind es in diesem Fall etwa 4,3 GB.

Als Entwickler weiß ich, dass "aktiver Speicher" die Menge an Speicher ist, die derzeit von laufenden Prozessen verwendet wird. Das erste, was ich tat, war, alle Anwendungen zu beenden und alle Prozesse zu beenden, die nicht zu Mac OS X gehören.

Nachdem ich das getan hatte, ging mein aktives Gedächtnis um 400 MB runter, blieb aber bei dem hängen, was Sie auf dem Screenshot sehen. Es gibt keine Prozesse oder Anwendungen mehr, die beendet werden müssen.

Jetzt frage ich mich, was hält eigentlich an der Erinnerung? topund der Aktivitätsmonitor meldet keine Prozesse mit hoher Speicherauslastung.

Irgendwelche Ideen?

Vielen Dank!


Update 1:

Dank Doug Harris 'Antwort habe ich diesen Screenshot gemacht. Es zeigt eine aktive Speichernutzung von 2,55 GB im gesamten System, aber nur 1,55 GB, die der psBefehl berechnet.

enter image description here

Ich bin mir nicht sicher, wo der Rest der 2,55 GB ist oder wo er zugeteilt wird. Ich habe Instrumente installiert, aber da dies einige Stunden dauert, ist es schwierig, Instruments zu verwenden. Dies fühlt sich an wie ein Speicherleck irgendwo im Betriebssystem. Möglicherweise ein Treiber (obwohl ich keine Kernel-Erweiterungen installiert habe - überprüft mit kextstat).

Ich persönlich denke, es wäre interessant, mehr über den Status der Speicherverwaltung zu erfahren. Unter Linux stehen einige Informationen unter "/ proc" zur Verfügung, afaik.

7
Sie können Instrumente verwenden, um Speicherlecks zu erkennen und die vollständige Überwachung aufzuzeichnen. Warum ist es schwierig, es genau zu benutzen? matthias krull vor 13 Jahren 0
Denn die Lecks passieren über ein paar Stunden. Ich bin mir nicht einmal sicher, welcher Prozess überwacht werden soll, da der Speicher einfach weg ist. Durch die Verwendung von Instrumenten zum Auffinden von Lecks wird viel CPU und Speicher für die Aufzeichnung benötigt. Dies ist nicht gut für die Überwachung einer langen Zeitspanne. BastiBen vor 13 Jahren 0

4 Antworten auf die Frage

4
Doug Harris

Obwohl kein einzelner Prozess eine hohe Speicherauslastung aufweist, laufen noch viele Prozesse - und das summiert sich.

Mit psund anderen Befehlszeilenwerkzeugen können Sie tiefer in diese Bereiche eindringen.

Verwenden Sie zunächst die Optionen, psum die Anzeige auf den residenten Speicher und den Namen des Befehls zu beschränken. -mSortiert die Ausgabe nach Speichernutzung, -azeigt die Prozesse aller Benutzer an, -xzeigt Prozesse, die nicht mit einem Terminal verbunden sind (dh die meisten Mac-Apps).

$ ps -axm -o "rss,comm" 

Hier sind die ersten Zeilen, die ich sehe:

 RSS COMM 210256 /Applications/Firefox.app/Contents/MacOS/firefox-bin 158276 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome 155360 /Applications/iTunes.app/Contents/MacOS/iTunes 

Es ist kein Schock für mich, dass diese ganz oben stehen (und der gezeigte Chrome-Prozess ist nur einer von vielen). Die RSS-Spalte wird als 1024-Byte-Blöcke ausgedrückt. ITunes verwendet also etwa 151,7 MB.

Diese Ausgabe ist so gut formatiert, dass Sie sie zur Analyse in eine Kalkulationstabelle werfen können, wenn Sie die Dinge auf diese Weise analysieren möchten. Ich bleibe noch etwas länger auf der Kommandozeile

Fassen Sie einen Haufen mehr zusammen, um die Summe aller Prozesse zu sehen:

$ ps -axm -o "rss,comm" | awk 'BEGIN { s=0;}; ; END { printf("%.2f GB\n", (s/1024.0/1024));}' 

Die Ausgabe, die ich dafür sehe, ist 2.44 GBnicht genau das, was ich im Aktivitätsmonitor für Aktivspeicher sehe, aber nahe genug, dass ich ps verwenden kann, um dem auf den Grund zu gehen.

Sie können nur die Prozesse mit mehr als 100 MB hinzufügen:

$ ps -axm -o "rss,comm" | awk 'BEGIN { c=0;s=0;}; ($1 > 100000) ; END { printf("%.2f GB from %d processes\n", (s/1024.0/1024),c);}'  0.98 GB from 8 processes 

Ich habe dir nicht genau gesagt, was den Speicher deines Macs verwendet, aber diese Tools helfen dir dabei, zu entdecken.

Beeindruckend. Vielen Dank für diesen Leitfaden. Ich habe meinen Mac inzwischen neu gestartet, aber ich bin mir sicher, dass mein Gedächtnis in Kürze wieder voll sein wird, damit ich es ausprobieren kann. In der Zwischenzeit haben Sie eine positive Meinung! BastiBen vor 13 Jahren 0
Bearbeitet, um die Option "-a" aufzunehmen, um Prozesse anzuzeigen, die anderen Benutzern als mir gehören. Doug Harris vor 13 Jahren 0
Der ursprüngliche Beitrag wurde aktualisiert, um das wiederzugeben, was ich bisher herausgefunden habe. BastiBen vor 13 Jahren 0
1
chiggsy

man -k DTrace. Diese Tools lösen dieses Problem. Viel Glück

0
Gordon Davisson

Es hört sich an, als ob einer der Systemprozesse Speicher verliert (entweder, oder es werden aus irgendeinem Grund immer mehr Systemprozesse ausgeführt). Sie können dies direkt im Aktivitätsmonitor überprüfen, indem Sie das Popup-Menü in der Symbolleiste von Meine Prozesse auf Alle Prozesse umstellen und dann nach der Spalte Real Mem sortieren. Suchen Sie nach Prozessen, die sehr viel Arbeitsspeicher und / oder viele Instanzen mit demselben Prozessnamen verwenden. Das löst das Problem zwar nicht, sollte aber zumindest eine Vorstellung davon geben, woher es kommt.

Ich habe es schon vorher versucht, aber mein Hauptproblem ist, dass es einfach keine Prozesse gibt, die so viel Speicher beanspruchen. BastiBen vor 13 Jahren 0
In diesem Fall kann der Ansatz von Doug Harris möglicherweise eine detailliertere Analyse (z. B. in einer Kalkulationstabelle) durchführen. Ich würde empfehlen, eine Art Bericht darüber zu erstellen, wie die Statistiken aussehen, als das System vor kurzem neu gestartet wurde (ob Aufzeichnungen der Ausgabe von "ps", Screenshots des Aktivitätsmonitors oder was auch immer), so dass Sie etwas zu vergleichen haben, wenn das System läuft eine Weile und verwendet viel Speicher. Finden Sie heraus, welche Änderungen in der Prozessliste ausgeführt werden, und es sollte Sie auf das Problem hinweisen. Gordon Davisson vor 13 Jahren 0
0
Yann Bizeul

Für mich scheint der aktive Speicher nur für die Wiederverwendung verfügbarer Speicher zu sein, der jedoch nicht ausdrücklich als "frei" gekennzeichnet ist.

Quelle für das "es scheint mir"? Wir mögen genaue Antworten, unterstützt durch Referenzen. vonbrand vor 11 Jahren 3