.net macht ArrayList.Clear Speicher frei?

7

Ich habe eine stark besetzte Arraylist, die ich löschen und wiederverwenden möchte. Wenn ich es lösche, wird es den vorher verwendeten Speicher freigeben?

Ich sollte auch erwähnen, dass die Arraylist ein privates Read-Only-Feld einer Klasse ist, die immer noch viel aktive Arbeit zu tun hat, nachdem ich die Arraylist zum ersten Mal benutzt habe. Ich kann also nicht warten, bis die Garbage-Collection nach dem Kurs aus dem Rahmen gerät.

Ist die Clear-Methode schnell genug? Oder sollte ich eine neue Arraylist zerstören und erstellen?

Frage Update:

Wenn ich das Feld so deklariert habe (Danke an Jon's Rat)

%Vor%

dann bevölkere ich es .... (schwer)

Wenn jetzt, anstatt es zu löschen und zu trimmen, kann ich einfach anrufen:

%Vor%

Wäre das zu empfehlen?

    
JL. 13.01.2010, 20:04
quelle

2 Antworten

16

Machen Sie das, was Ihre Absicht besser ausdrückt. Wollen Sie eigentlich eine neue Liste? Wenn ja, erstellen Sie eine neue. Wenn Sie konzeptionell dieselbe Liste wiederverwenden möchten, rufen Sie Clear auf.

Die Dokumentation für ArrayList besagt, dass Clear behält die ursprüngliche Kapazität bei - so haben Sie immer noch ein großes Array, aber es wird voll von Nullen sein, anstatt auf die vorherigen Elemente zu verweisen:

  

Capacity bleibt unverändert. Zurücksetzen   die Kapazität von ArrayList , call    TrimToSize oder setze Capacity   Eigentum direkt. Ein leeres trimmen    ArrayList setzt die Kapazität des    ArrayList auf die Standardkapazität.

Irgendein Grund, warum Sie ArrayList anstatt List<T> übrigens benutzen?

    
Jon Skeet 13.01.2010, 20:07
quelle
3

Wenn der Speicher tatsächlich frei sein soll, setzen Sie ihn auf null und rufen Sie den Garbage Collector auf. Erstellen Sie dann eine neue ArrayList. Wenn Sie den Wert auf null setzen und dann einen neuen Wert erstellen, wird möglicherweise Garbage Collection ausgeführt, wenn zusätzlicher Speicher benötigt wird. Auch ich zweite generische Sammlungen. Es ist lange her, seit ich ArrayList benutzt habe.

    
Nate 13.01.2010 20:21
quelle

Tags und Links