Heim > Java > javaLernprogramm > 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

不言
Freigeben: 2019-02-11 11:08:40
nach vorne
2937 Leute haben es durchsucht

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();
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage