Frage

Kann jemand etwas klare Erklärung der Bedeutung der Größe und RSS-Werte geben wir aus prstat in Solaris bekommen?

Ich schrieb eine Prüfung C ++ Anwendung, die Speicher mit new[] zuweist, füllt es und gibt es mit delete[].

Wie ich verstand, sollte der SIZE-Wert in Beziehung gesetzt werden, wie viel virtuelle Speicher durch den Prozess „reserviert“ sind, dh Speicher „malloced“ oder „newed“.

Das Speicher zusammenzufassen nicht in dem RSS-Wert, wenn ich es wirklich verwenden (mit einigen Werten füllen). Aber dann, auch wenn ich den Speicher frei, wird der RSS nicht fallen.

Ich verstehe nicht, was semantische ich mich richtig auf diese 2 Werte zuweisen kann.

War es hilfreich?

Lösung

ist RSS (AFAIK zuverlässig) darstellt, wie viel physischer Speicher ein Prozess verwendet wird. Verwenden von Solaris Standard Speicherzuordner, Speicherfreigabe RSS nicht alles tun, um, wie es ändert sich nur einige Hinweise und Werte, dass der Speicher zu sagen ist, frei wiederverwendet werden. Wenn Sie wieder nicht, dass der Speicher verwenden, indem sie wieder die Zuteilung, wird es schließlich paginierte geführt werden und die RSS sinkt.

Wenn Sie freigegebenen Speicher wollen sofort nach einem freien zurückgegeben werden, können Sie die Solaris Mmap allocator wie folgt verwenden:

export LD_PRELOAD=libumem.so
export UMEM_OPTIONS=backend=mmap

Andere Tipps

Größe ist die gesamte Größe des virtuellen Speichers des Prozesses, einschließlich aller zugeordneten Dateien und Geräte, und RSS sollte der Resident Set Größe sein, aber es ist völlig unzuverlässig, Sie sollte versuchen, diese Informationen zu erhalten pmap .

In der Regel einmal Speicher zu einem Prozess zugeordnet ist, wird es nie wieder an das Betriebssystem gegeben werden. Auf Unix-Systemen wird die sbrk () Aufruf verwendet, um den Prozesse Adressraum zu erweitern, und es gibt nicht analog Anruf in der anderen Richtung zu gehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top