Frage

Gibt es einen Weg in Java, etwas zu tun, bevor er nicht mehr in Erinnerung gerät? Wenn Sie beispielsweise eine Liste früherer Dokumentstaaten (für Rückgänger) behalten und nur sehr alte Zustände entfernen, wenn die Erinnerung erschöpft ist?

War es hilfreich?

Lösung

Wenn Sie beispielsweise eine Liste früherer Dokumentstaaten (für Rückgänger) behalten und nur sehr alte Zustände entfernen, wenn die Erinnerung erschöpft ist?

Möglicherweise können Sie etwas tun SoftReference. Beachten Sie auch die allgemeine Dokumentation für die java.lang.ref Paket. Wenn die Objekte nur über a erreichbar sind SoftReference, Sie werden Müll erhoben, bevor ein Speicherfehler auftritt. Beachten Sie jedoch, dass VMs nicht verpflichtet sind, diese Referenzen vor einem solchen Ereignis zu behalten oder Garantien dafür zu erhalten, in welcher Reihenfolge sie möglicherweise geklärt werden.

Andere Tipps

Ja, es ist sicherlich möglich.

Ich würde wahrscheinlich eine Liste von verwenden Weiches für Ihre vorherigen Dokumentstaaten. Diese sind garantiert entsorgt, bevor eine Ausnahme aus dem Speicher ausgelassen wird.

In einigen regelmäßigen Abständen können Sie Nullreferenzen aus der Liste reinigen.

Ich würde auch empfehlen, einen normalen Hinweis auf den neuesten Zustand zu behalten, damit Sie immer mindestens einen rückgängig machen können :-)

Es hängt von der JVM -Implementierung ab, aber wenn Sie Glück haben, wird die JVM die jüngsten Staaten behalten und die ältesten entsorgen. Dies ist in der JVM -Spezifikation nicht ausschließlich erforderlich, ist jedoch das empfohlene Verhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top