Kann die Arbeiten durch Entladen nicht verwalteten Bibliotheken mit AfxFreeLibrary eingestellt werden einer verwalteten App reduziert?

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

  •  03-07-2019
  •  | 
  •  

Frage

falls auf dem Client-Rechner

Ich habe eine verwaltete Windows-Anwendung, die eine verwaltete C ++ Komponente lädt, die AfxLoadLibrary eine dritte Partei Komponente zu laden, verwendet. Einmal erkannt, ich bin Entladen der Komponente AfxFreeLibrary in einem Versuch mit dem Arbeitssatz der verwalteten Stammanmeldung zu senken.

Der Aufruf von AfxFreeLibrary erfolgreich ist (überprüft Process Explorer verwenden), aber kein Speicher frei. Ist dies aufgrund der Art einer verwalteten Anwendung, oder gibt es eine Möglichkeit, diesen Prozess um Speicherplatz freizugeben?

Ich bin nicht nach alternativen Wegen suchen, dieses Problem im Allgemeinen zu bekämpfen, da der Code bereits in der Produktion ist, eher würde Ich mag, um herauszufinden, ob der Ansatz des Löschens lohnt.

War es hilfreich?

Lösung

Es sollte tun, können Sie es beweisen, indem sie eine reine native App zu schreiben und zu sehen, die Arbeitsseite. Setzen Sie jedoch arbeitet, ist die Größe des Speichers erforderlich, um die App zu laufen, so dass, wenn der Code durch die DLL verwendet wird, kann ausgelagert werden, dann wird der Arbeitssatz nicht reduziert werden - von Windows es nicht zählen als Teil des Arbeitssatzes .

Wenn die dll private Speicher den Prozess zugewiesen hat, die nicht ausgetauscht werden kann, dann ist das nicht zählt und reduziert die Arbeitsseite.

so die Antwort ist, dass es abhängt. Es ist nicht garantiert einen Unterschied machen, und wenn die DLL nicht verwendet wird, dann wird es ausgetauscht wurde und ist nicht Teil des aktuellen Arbeitssatzes. Genauso gut könnte man sich nicht die Mühe es Entladen, es sei denn, Sie mögen es, Dinge halten ordentlich.

Die einzige Möglichkeit, den Arbeitssatz zu reduzieren, ist die App verwenden weniger Speicher zu haben. Wie schon der eine .NET-Anwendung, die Chancen sind Sie haben nicht viel Kontrolle über sie überhaupt (wie der GC wird seine eigene Meinung darüber, wie viel Speicher ist ‚aktiv‘ und im Arbeitssatz erforderlich)

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