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!