915 Stimmen

Was ist der Unterschied zwischen SoftReference und WeakReference in Java?

Was ist der Unterschied zwischen java.lang.ref.WeakReference y java.lang.ref.SoftReference ?

2voto

Fai Lau Punkte 31

Man sollte sich darüber im Klaren sein, dass ein schwach referenziertes Objekt nur dann abgeholt wird, wenn es NUR schwache Referenz(en) hat. Wenn es auch nur eine starke Referenz hat, wird es nicht eingesammelt, egal wie viele schwache Referenzen es hat.

0voto

Artem Petrov Punkte 712

WeakReference Objekte, die nur schwach referenziert sind, werden bei jedem GC-Zyklus (minor oder full) gesammelt.

SoftReference Wenn Objekte, die nur sanft referenziert werden, gesammelt werden, hängt das davon ab:

  1. Kennzeichen -XX:SoftRefLRUPolicyMSPerMB=N (Standardwert ist 1000, d. h. 1 Sekunde)

  2. Menge des freien Speichers auf dem Heap.

    Beispiel:

    • Heap hat 10MB freien Platz (nach voller GC);
    • -XX:SoftRefLRUPolicyMSPerMB=1000

    Dann wird das Objekt, auf das nur durch SoftReference verwiesen wird, gesammelt, wenn der letzte Zugriffszeitpunkt größer als 10 Sekunden ist.

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