So finden Sie Speicherlecks eines Prozesses?
Ich brauche, um herauszufinden, die Speichernutzung eines bestimmten Prozesses. In der Tat, ich brauche, um herauszufinden, gibt es keine Speicher-Leck in der Anwendung, die ich geschrieben habe. Ich kann memfree
oder /proc/meminfo
da unsere system-log-Ordner gemountet, der RAM.
Ich gegangen durch viele ähnliche Anfragen, und einige haben vorgeschlagen, um zu verwenden ps aux
Befehl. Ich bin irgendwie verwirrt, auf welche parameter gibt den richtigen Speicher-Auslastung oder vielleicht Speicher Leck nach ein paar Stunden. PS AUX
gibt VSZ(virtual mem)
und RSS(resident set size)
.
Ich geschrieben habe ein Beispiel-Programm, das reserviert 4 Byte Speicher und De-alloziert. Nach dem ausführen des Programms, es scheint VSZ
Wert steigt, wenn Speicher reserviert, aber nicht abgenommen, wenn De zugeordnet. Aber RSS
Wert zeigte korrigieren, erhöht sich, wenn zugeteilt, und verringert, wenn De zugeordnet.
Kann jemand bestätigen, ob mit RSS
Wert auf die Menge der Speicherverlust im code? Oder gibt es eine andere Methode?
- Das Betriebssystem kann nicht bestimmen, ob es gibt Speicherlecks in der Anwendung. Du wirst nie bekommen diese Art von Informationen, die von tools wie
ps
oder finden Sie es in/proc/meminfo
. Der Titel dieser Fragen für "Speicher-Auslastung eines Prozesses", aber der text fragt nach memory-leaks. Eine richtige Antwort auf diese Frage wurde von Dan: Valgrind ich habe bearbeitet den Titel entsprechend.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wissen, die details, die Sie verwenden können, pmap:
pmap pid
Ich weiß, das ist uralt, aber ich fühle die Notwendigkeit zu sagen, dass für so etwas, Sie wirklich wollen einfach nur, um ein Werkzeug zu verwenden, wie Valgrind. Nämlich, Valgrind. Das ist definitiv der Weg zu gehen, vor allem mit einem Programm, das Sie schreiben (oder geschrieben haben), da können Sie zwicken die compile-flags so gut wie Sie können die meisten nützlich Ausgabe. Angenommen, Sie sind mit
gcc
, versuchen Sie die Kompilierung mit-g
zu aktivieren debug-Symbole und nichtstrip
die binäre.Verwendung ist ziemlich einfach, und die docs sind auf der verlinkten website. Die grundsätzliche Verwendung ist nur
valgrind program
auf der Kommandozeile. Es zeigt Ihnen nicht nur die Besonderheiten, aber eine schöne Zusammenfassung von Speicher geleckt am Ende.Ich nach oben verwenden für diese Art der Sache.