Schwache Referenzvorteile
Kann jemand erklären die wichtigsten Vorteile der verschiedenen Arten von Referenzen in C#?
- Schwache Referenzen
- Soft-Referenzen
- Phantom-Referenzen
- Starken Referenzen.
Wir haben eine Anwendung, die verbrauchen viel Speicher, und wir versuchen, zu bestimmen, ob dies ein Gebiet zu konzentrieren.
InformationsquelleAutor der Frage leora | 2008-11-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Soft-und phantom-Referenzen kommen aus Java, glaube ich. Eine lange schwache Referenz (true übergeben an C#'s WeakReference Konstruktor) könnte als ähnlich zu Java ist PhantomReference. Wenn es einen analog zu SoftReference in C#, ich weiß nicht, was es ist.
Schwache Referenzen verlängern nicht die Lebensdauer eines Objekts, so dass es von der garbage Collection freigegeben, sobald alle starken Referenzen gegangen sind, aus der Umfang. Sie können nützlich sein, zu halten, um große Objekte, die teuer sind, zu initialisieren, sollte aber vorhanden sein für die garbage collection wenn Sie nicht aktiv im Einsatz.
Ob oder nicht, dies wird nützlich sein für die Verringerung der Speicherverbrauch der Anwendung hängt ganz von den Einzelheiten der Anwendung. Zum Beispiel, wenn Sie eine moderate Anzahl von Cache-Objekten rumhängen, die kann oder kann nicht wiederverwendet werden, in der Zukunft, schwache Referenzen könnte dazu beitragen, den Speicherbedarf des caches. Allerdings, wenn die app arbeitet mit einer sehr großen Anzahl von kleinen Objekten, schwache Verweise machen das problem noch schlimmer, da die Referenz-Objekte nehmen so viel oder mehr Speicher.
InformationsquelleAutor der Antwort Scott Pedersen
MSDN hat eine gute Erklärung dafür,schwache Referenzen. Der Schlüssel zitieren, ist an der Unterseite, wo es heißt:
Jedes mal, wenn ich gesehen habe eine WeakReference in der wildnis, es wurde als eine automatische Lösung für Speicher-management-Probleme. Es gibt wahrscheinlich bessere Lösungen für Ihre Anwendung Probleme.
InformationsquelleAutor der Antwort MusiGenesis
Brilliant realen Beispiel mit WeakReference erklärt Android development tutorial.
Gibt es ein Bild (Bitmap) und Bild-container in die view (Bildansicht). Wenn das Bild geladen wird, nicht die aus dem Speicher (aber z.B. von der Festplatte, net), dann kann es sperren UI-thread und dem Bildschirm. Um zu vermeiden, es eine async-task verwendet werden.
Das problem entsteht, wenn die asynchrone Aufgabe abgeschlossen ist. Bild-container kann überhaupt nicht sinnvoll zu diesem Zeitpunkt (Bildschirm geändert wird oder Android entlädt unsichtbar Ansicht Teil nach dem scrollen). WeakReference hier helfen kann und Bildansicht wird Müll gesammelt.
P. S. das Beispiel ist in Java, kann aber verstanden werden, indem Sie C# - Entwickler.
Quelle: http://developersdev.blogspot.ru/2014/01/weakreference-example.html
InformationsquelleAutor der Antwort Artru