Heim  >  Artikel  >  Java  >  Eine vergleichende Einführung in starke Referenzen, weiche Referenzen, schwache Referenzen und virtuelle Referenzen in Java

Eine vergleichende Einführung in starke Referenzen, weiche Referenzen, schwache Referenzen und virtuelle Referenzen in Java

不言
不言nach vorne
2019-02-11 11:08:402901Durchsuche

Dieser Artikel bietet Ihnen eine vergleichende Einführung in starke Referenzen, schwache Referenzen und virtuelle Referenzen. Ich hoffe, dass er Ihnen hilfreich sein wird.

Starke Referenz

Wenn ein Objekt eine starke Referenz hat, wird der Garbage Collector es nie zurückfordern. Wenn nicht genügend Speicherplatz vorhanden ist, würde die Java Virtual Machine lieber werfen ein OutOfMemoryError-Fehler, der dazu führt, dass das Programm abnormal beendet wird und das Problem des unzureichenden Speichers nicht durch zufälliges Recycling von Objekten mit starken Referenzen löst.

SoftReference

Wenn genügend Speicherplatz vorhanden ist, wird der Garbage Collector ihn nicht zurückfordern; wenn nicht genügend Speicherplatz vorhanden ist, wird der Speicher dieser Objekte verwendet zurückgefordert werden. Solange der Garbage Collector es nicht zurückfordert, kann das Objekt weiterhin von der Anwendung verwendet werden. Soft-Referenzen ermöglichen speichersensitives Caching.

Schwache Referenz Weakreference

Objekte mit nur schwachen Referenzen haben einen kürzeren Lebenszyklus. Der Garbage Collector-Thread scannt den von ihm verwalteten Speicherbereich. Sobald ein Objekt mit nur einer schwachen Referenz gefunden wird, wird sein Speicher zurückgewonnen, unabhängig davon, ob der aktuelle Speicherplatz ausreicht. Da der Garbage Collector jedoch ein Thread mit sehr niedriger Priorität ist, kann es sein, dass er diese Objekte nicht unbedingt schnell findet. Ein Objekt mit nur schwachen Referenzen.

Virtuelle ReferenzPhantomReference

Virtuelle Referenz bestimmt nicht den Lebenszyklus des Objekts. Wenn ein Objekt nur eine Phantomreferenz enthält, hat es keine Like-Referenzen , sie können jederzeit recycelt werden.

Referenzwarteschlange ReferenceQueue

Referenzwarteschlange kann in Verbindung mit weichen Referenzen, schwachen Referenzen und virtuellen Referenzen verwendet werden. Virtuelle Referenzen müssen in Verbindung mit verwendet werden Referenzwarteschlangen. Wenn das Objekt, auf das durch eine weiche Referenz (schwache Referenz oder virtuelle Referenz) verwiesen wird, durch Müll gesammelt wird, fügt die Java Virtual Machine diese Referenz der damit verbundenen Referenzwarteschlange hinzu.

        String reference = "hello";
        //引用队列
        ReferenceQueue<String> queue = new ReferenceQueue<>();
        //弱引用
        WeakReference<String> softReference = new WeakReference<String>(reference,queue);
        reference = null;
        //取出弱引用持有的String对象
        String str = softReference.get();
        //取出引用队列中保存的引用对象
        Reference<? extends String> poll = queue.poll();

Das obige ist der detaillierte Inhalt vonEine vergleichende Einführung in starke Referenzen, weiche Referenzen, schwache Referenzen und virtuelle Referenzen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen