Speicher sparen?

Trivalik

Mitglied
Ich wollte in meinem Programm komponenten entladen, darunter edliche buttens listboxen, usw. auch ein eigen kreiertes Datenfeld.

ich habe nun angefangen mit

Code:
this.button1.Dispose();
this.button1=null;

Auf diese weise ist es im Taskmannager nicht möglich eine Speicher freigabe festzustellen!
Ist das so gut, oder soll ich nur das Dispose nutzen bzw. nur auf null setzen?
 
Code:
Button b1 = new Button();
b1 = null;
GC.Collect();
//GC.WaitForPendingFinalizers();

Mit GC.Collect startest du den Garbage Collector manuell.
Da er asynchron läuft, kannst du mit GC.WaitForPendingFinalizers auf seine Fertigstellung warten.
 
Es passiert nix bzw es wird sogar noch 1MB mehr Speicher verbraucht!
Nach ich alle Disposed hab zeigt er mir vor Collect auch nur 2 bei MaxGeneration obwohl ich mindestens 10 was entlade!

Aber wenn ich einen Datentyp selbst erstellt habe in als class, und will diesen entladen? Wie mache ich das? Auf null setzen und GB.Collect()?
 
Nikon the Third hat gesagt.:
Code:
Button b1 = new Button();
b1 = null;
GC.Collect();
//GC.WaitForPendingFinalizers();

Mit GC.Collect startest du den Garbage Collector manuell.
Da er asynchron läuft, kannst du mit GC.WaitForPendingFinalizers auf seine Fertigstellung warten.

Da kannst eine Stunde auch warten wenn du Pech hast. Nur weil du in manuell anstartest, heißt es noch lange nicht, dass er auch sofort anläuft.

Ausserdem sollte laut Microsoft der GC nicht händisch angestartet werden.

@Trivalik:
Du hast dir den Link, den ich gepostet hab, nicht wirklich durchgelesen, oder

Du brauchst da nichts zu tun, das ist ja der Sinn und Zweck eines Garbage Collectors. Er sammelt alle Objekte etc. ein, worauf es keine Referenz etc. mehr gibt. Dies ist zb der Fall, wenn ein Objekt nicht mehr verwendet wird bzw. Das er kennt er aber automatisch.

Du solltest lieber gucken, dass du Objekte verwendest, die möglichst schnell sind und wenig Speicher verbrauchen, als den GC händisch anzuwerfen etc. Das kann nämlich auch ein wenig böse enden ...

Wie gesagt, lies dir bitte den Link durch.
 
Zurück