Was könnte den Unterschied in der Erinnerungsnutzung erklären, die von Fastmm oder GetProcessMemoryInfo berichtet wird?

StackOverflow https://stackoverflow.com//questions/9704786

Frage

My Delphi XE-Anwendung basiert auf einem einzelnen EXE mit einem von Remobjects erstellten lokalen Server-DLL und verwendet viel Speicher für einen bestimmten Vorgang, bis er eine Ausnahme erzeugt, dass es nicht genügend Speicher gibt. Ich versuche also zu verstehen, warum und wo dies passiert, sodass ich verschiedene Schritte in meinem gesamten Code platzierte, in dem ich über die Erinnerungsnutzung melde. Das Problem ist, dass ich sehr unterschiedliche Informationen erhalten, basierend auf der Methode, die zur Erzielung von Speichernutzungsinformationen verwendet wird:

    .
  1. Wenn ich die Methode hier erläutert habe , die Fastmm direkt für den Client EXE- und Server-DLL fragt, ist hier was ich bekomme:

    • Schritt 1: [Client]= 36664572 - [Server]= 3274976
    • Schritt 2: [Client]= 62641230 - [Server]= 44430224
    • Schritt 3: [Client]= 66665630 - [Server]= 44430224
  2. Jetzt, wenn ich das Verfahren benutze hier erläutert , der getprocessmemorinfo verwendet, bekomme ich weit mehr Speichernutzung: < / p>

    • Schritt 1: [Prozess]= 133722112
    • Schritt 2: [Prozess]= 1072115712
    • Schritt 3: [Prozess]= 1075818496
  3. Es sieht so aus, als ob die zweite Methode das Recht ist, basierend auf meinen Speicherproblemen, aber wie könnte die Fastmm-Methode so "niedrig" sein? Und was kann den Unterschied erklären?

War es hilfreich?

Lösung

getprocessmemoryinfo meldet auch den Speicher, der nicht von Fastmm verwaltet wird, wie dem Speicher, der von den verschiedenen Nicht-Delphi-DLLs zugewiesen wird, die Sie möglicherweise anrufen (wie Winapi).

Auch Fastmm kann mehr Speicher von Windows zuordnen, dass Ihre Anwendung tatsächlich für interne Strukturen, Fragmentierung und Pooling verwendet wird.

und wie zuletzt, mit getprocessmemoryinfo messen Sie die verarbeitende Größe.Das ist ein Teil des Speichers der Anwendung in RAM statt, wenn in der Seitendatei.Es umfasst mehr als nur Datenstrukturen und ist definitiv nicht mit dem gesamten Speicher vergleichbar, den die Anwendung zugewiesen hat.PageFileSusing wäre vergleichbarer.Workingset-Größe fast nie ist das, wonach Sie suchen.Siehe hier für eine bessere Erklärung.

Sie geben also beide unterschiedliche Ergebnisse, da beide unterschiedliche Dinge messen.

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