Guten Tag alle,wie finden zugewiesenen Speicher in Linux
Was ich versuche zu erreichen: Ich möchte eine Erweiterung auf eine C++ Einheit Testvorrichtung implementieren, um festzustellen, ob der Test Speicher reserviert und befreit es nicht. Meine Idee war, Zuweisungslevel oder freie Speicherlevels vor und nach dem Test aufzuzeichnen. Wenn sie nicht übereinstimmen, verlieren Sie Speicher.
Was ich bisher versucht habe: Ich habe eine Routine geschrieben /proc/self/stat lesen die vm Größe und Resident Set Größe zu erhalten. Die Größe des Residents scheint mir das zu sein, was ich brauche, aber es ist offensichtlich nicht richtig. Es wechselt zwischen aufeinanderfolgenden Aufrufen der Funktion ohne Speicherzuweisung. Ich glaube, dass es den zwischengespeicherten Speicher zurückgibt, der nicht verwendet wird, was zugeteilt wird. Es ändert sich auch in 4k-Schritten, so dass es zu grob ist, um wirklich nützlich zu sein.
Ich kann die Stapelgröße durch Zuweisen eines lokalen und Speichern der Adresse erhalten. Gibt es Probleme damit?
Gibt es eine Möglichkeit, um wirklich freien oder allozierten Speicher auf Linux zu bekommen?
Dank
Es ändert sich in 4k-Schritten, da dies die Standard-Seitengröße unter Linux ist. Der Speicher wird einem Prozess auf Seiten zugewiesen, nicht Byte für Byte. Wenn Sie also über den gesamten Speicherverbrauch Ihres Prozesses sprechen, ist das nicht grobkörnig, sondern es passiert wirklich etwas. –
Wenn es zeigt mir 4k Seiten des Arbeitsspeichers verwendet und ich lecke 100 Bytes Ich sehe wahrscheinlich keine Änderung in der Anzahl der 4k Seiten, die ich benutze. Deshalb habe ich gesagt, dass es für diese Anwendung zu grobkörnig ist. – Jay
Speicher wird wahrscheinlich nie zum Betriebssystem zurückgeschickt, bis die Anwendung beendet wird, so dass die Überprüfung der verwendeten Menge kein praktikabler Test ist. Hinweis: Die Anwendung empfängt Speicher in Teilen von 4K, verwaltet diese Seite jedoch, bis sie beendet wird. Der Speicher kann mehrfach zugewiesen und freigegeben werden, ohne jemals zum Betriebssystem zurückzukehren. –