Gibt es "intelligente Zeiger" in Java?

7

Gibt es etwas in Richtung C ++ - Smartpointer in Java?

    
garima 24.01.2011, 15:19
quelle

4 Antworten

12

Alle "Zeiger" (Referenzen) von Java sind Smart Pointer.

Java wird in einer verwalteten Umgebung ausgeführt. Das bedeutet, dass Java einen Garbage Collector verwendet, um Variablen zu bereinigen, die nicht mehr referenziert sind.

Java-Referenzen unterscheiden sich jedoch geringfügig von Zeigern. Java abstrahiert alle Zeigerwerte und Berechnungen, die Sie in C ++ sehen. Wenn Sie also ein neues Objekt erstellen und es in einer Variablen speichern, speichern Sie es in der Java-Version eines "intelligenten Zeigers".

    
jjnguy 24.01.2011, 15:22
quelle
6

Ich habe im Zusammenhang mit der Speicherverwaltung nur von intelligenten Zeigern gehört. Da das Speichermanagement der Kern der Java-Plattform ist, ist dies natürlich nicht notwendig.

Die am ehesten passenden Übereinstimmungen sind java.lang.ref.WeakReference und java.lang.ref.SoftReference, da sie erlauben, die Garbage Collection bis zu einem gewissen Grad anzupassen.

    
sfussenegger 24.01.2011 15:23
quelle
5

Ja und nein. Nein, in Java existiert nichts wie ein Zeigerobjekt. Ja in dem Sinne, dass jedes Objekt ein "intelligenter Zeiger" ist, was bedeutet, dass es dem Müllsammeln unterworfen ist und sich sozusagen um seine eigene Lebensdauer kümmert.

    
Neil 24.01.2011 15:21
quelle
3

Nein, in Java gibt es keine Zeiger einer Klasse. Im Allgemeinen benötigen Sie keine Smart Pointer , da Sie bereits einen Garbage Collector implementiert haben, der die Referenzzählung durchführt, um den Speicherzuweisungs- / Freigabezyklus automatisch zu verwalten.

    
Pablo Santa Cruz 24.01.2011 15:20
quelle

Tags und Links