Frage zu Speicher-Belegung einer .NET-Anwendung

25/03/2009 - 11:37 von M.Erlinger | Report spam
Hallo

ich hàtte folgende Frage zu meiner .Net-Anwendung mit dem
Speicherverbrauch:
Es ist eine MDI-Datenbank-Applikation, in der viele DataGrid's und
Controls (gebunden) verwendet werden. Die Bindung selbst baue ich
immer mit einem SqlDataAdapter manuell im Code auf.
Wenn viele Fenster in der Applikation geöffnet wurden, und bei allen
Daten eingelesen - kann es vorkommen, dass die Applikation im Speicher
schon an die/über 100MB erreicht.und dann darüber hinaus

Meine Frage - Wenn ich die Fenster wieder schließe, oder die
DataGrid's leere, bleibt die Speicheranforderung immer gleich hoch;
jetzt habe ich testweise schon einmal den Versuch gestartet - Dispose
() bei den DataGrid's und sonstigen Komponenten beim Schließen der
Form aufzurufen..hat aber auch nichts gebrachtdie Speicher-
Anforderung bleibt (lt. Task-Manager).

Ist das so?? - oder ist das ein Problem meiner Applikation ??
Ich dachte, da erledigt der GC sehr viel für mich im Hintergrund.

Vielleicht kann mir dazu bitte jemand weiterhelfen, und ein paar Tipps
geben.
Danke schon mal
Gruß
Michael
 

Lesen sie die antworten

#1 Harald M. Genauck
25/03/2009 - 13:19 | Warnen spam
Hallo Michael,

ich hàtte folgende Frage zu meiner .Net-Anwendung mit dem
Speicherverbrauch:
Es ist eine MDI-Datenbank-Applikation, in der viele DataGrid's und
Controls (gebunden) verwendet werden. Die Bindung selbst baue ich
immer mit einem SqlDataAdapter manuell im Code auf.
Wenn viele Fenster in der Applikation geöffnet wurden, und bei allen
Daten eingelesen - kann es vorkommen, dass die Applikation im
Speicher
schon an die/über 100MB erreicht.und dann darüber hinaus

Meine Frage - Wenn ich die Fenster wieder schließe, oder die
DataGrid's leere, bleibt die Speicheranforderung immer gleich hoch;
jetzt habe ich testweise schon einmal den Versuch gestartet - Dispose
() bei den DataGrid's und sonstigen Komponenten beim Schließen der
Form aufzurufen..hat aber auch nichts gebrachtdie Speicher-
Anforderung bleibt (lt. Task-Manager).

Ist das so?? - oder ist das ein Problem meiner Applikation ??
Ich dachte, da erledigt der GC sehr viel für mich im Hintergrund.



Das macht der GC auch - im Normalfall allerdings nicht zu einem
vorhersehbaren Zeitpunkt, sondern "irgendwann mal".

Die Dispose-Aufrufe haben nichts mit der Speicherfreigabe zu tun. Sie
sorgen lediglich dafür, dass das betreffende Objekt intern aufràumt und
Ressourcen schließt oder freigibt u.à., so dass diese, soweit selber
managed, vom spàteren Aktivwerden des GC erfasst und von diesem ihren
Speicher freigebend bearbeitet werden können.


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Herausgeber)

Ähnliche fragen