2 Stimmen

Wenn removeall auf einer Liste von Objekten verwendet wird, werden die Objekte vollständig aus dem Speicher entfernt?

Ich habe einige Speicherprobleme bei einer Anwendung, die ich einrichte und die häufig "removeall" auf einer Liste von benutzerdefinierten Objekten verwendet. Sollte etwas mit jedem der zu entfernenden Objekte vor dem Ausführen dieser Funktion getan werden, um aufzuräumen?

Vielen Dank!

2voto

Jeff Hornby Punkte 12050

RemoveAll entfernt sie aus Ihrer Sammlung. Wenn es andere Verweise auf die Objekte gibt, werden sie weiterhin existieren.

Sie könnten auch einige nicht verwaltete Ressourcen verwenden, die aufgeräumt werden müssen. Im Allgemeinen würden Sie diese in einer Dispose-Methode platzieren, wenn Sie IDisposable implementieren, und auch in einer Finalize-Methode, um sicherzustellen, dass sie aufgeräumt werden.

Andernfalls wird der Garbage Collector alle verwalteten Ressourcen aufräumen. Das einzige Problem, das dies verursachen kann (und das ist SEHR selten), besteht darin, dass der Garbage Collector mit niedrigerer Priorität läuft und wenn Ihr Prozessor ernsthaft ausgelastet ist, möglicherweise nicht genügend Zyklen erhält, um den Speicher aufzuräumen.

1voto

phoog Punkte 40628

Im Allgemeinen nein. Lassen Sie den Garbage Collector seine Arbeit tun.

Wenn die Objekte IDisposable implementieren, könnten Sie dafür argumentieren, Dispose darauf aufzurufen, aber nur wenn Sie wissen, dass sie an keiner anderen Stelle verwendet werden.

Wenn die Listen sehr groß sind, sind die Listen selbst wahrscheinlich an Ihren Problemen beteiligt. Große Listen sind eine häufige Ursache für Fragmentierung des großen Objektheaps. In diesem Fall müssen Sie sich nicht um die in der Liste enthaltenen Objekte kümmern.

Wenn Sie Ihre Speicherprobleme genauer beschreiben, erhalten Sie möglicherweise eine hilfreichere Antwort.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X