Ich habe eine Anwendung, deren Speicher mit den Testfällen zunimmt, die ich ausführe. Dies hat mich offensichtlich dazu gebracht, zu glauben, dass meine Anwendung Speicher verliert. So lief ich Valgrind auf meiner Anwendung und überraschenderweise fand es keine Lecks.Kann privater schmutziger Speicher ein Hinweis auf ausgelaufenen Speicher sein?
Ich bin nicht sicher, warum Speicher mein Prozess undicht ist, so habe ich mir die smaps Datei von meinem Prozess und unten, wenn, was ich
interessant gefunden08426000-42f56000 rwxp 00000000 00:00 0 [heap]
Size: 961728 kB
Rss: 960252 kB
Pss: 960252 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 960252 kB
Referenced: 960252 kB
Anonymous: 960252 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
Um Sinn über diese Zahlen zu machen ich einige der Forschung haben über Private_Dirty Speicher, die meisten Artikel zeigen, dass dies der Speicher, der noch nicht freigegeben wurde, weil sie teuer sind.
Dies scheint darauf hinzuweisen, dass dies nur Speicher ist, der von der Anwendung freigegeben wurde, aber immer noch vom Betriebssystem zurückgehalten wird.
Kann jemand mir helfen, private_dirty besser zu verstehen? Kann dies ein Hinweis auf das Speicherleck sein, das ich habe?
Dank
Bekommt der Speicher kleiner nach einem Bereinigungsschritt und vor der Routine verlassen? Es hört sich so an, als würden Sie etwas in Bezug auf die Testfälle festhalten, was dazu führt, dass die Erinnerung gehalten wird. Verwenden Sie geteilte Zeiger oder beschäftigen Sie sich direkt mit der Speicherverwaltung? – Jiminion
Es gibt eine Beschreibung [here] (http://stackoverflow.com/a/17596928/2096401) von was private-dirty ist: im Grunde Speicher, den Ihr Prozess "verwendet" (geschrieben) hat, so dass es gespeichert werden müsste, wenn ausgelagert, um Platz für einen anderen Prozess zu schaffen. Zeigt nicht an, dass Sie Speicher verlieren. – TripeHound
Möglicherweise reservieren Sie viel Speicherplatz mit geringer Größe und nehmen dann die Zuordnung auf. Ich kann nicht viel vorhersagen, aber hat es etwas mit Speicherfragmentierung zu tun? –