Reference-Counter

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo alle,

ich habe folgendes Problem: Ich möchte zu einer bestimmten Objekt-Instanz herausfinden, wie oft sie referenziert wird. Das heisst: Bin ich der einzige, der noch eine Referenz auf die Instanz hält, oder wird die Instanz noch von anderen Stellen referenziert?
Anders ausgedrückt: Der Garbage-Collector "entsorgt" (zur Laufzeit!!!) jedes Java-Objekt, das nicht mehr referenziert wird. Gibt es eine Möglichkeit heraus zu finden, WIE VIELE Referenzen auf ein bestimmtes Objekt noch existieren? Oder ist das gar nicht erst möglich?

Ich freue mich auf jede Antwort und sag schon mal danke! :)
 
G

Gast

Gast
glaub nicht, dass das ohne eigens erstellte kontrollstruktur möglich ist.

und eine kleine korrektur.

Der Garbage-Collector "entsorgt" (zur Laufzeit!!!) jedes Java-Objekt, das nicht mehr referenziert wird.

das ist nicht garantiert. er entsorgt "ab und an", nicht sofort. das ist besonders dann nervig, wenn man rasend schnell instanzen erzeugen muss, die kurz darauf nicht weiter referenziert werden, aber der träge GC die dinger nicht entsorgt und der (eh schon großzügig bemessene) heap space nach paar minuten gesprengt wird ^^
 

RaoulDuke

Bekanntes Mitglied
Gast hat gesagt.:
das ist besonders dann nervig, wenn man rasend schnell instanzen erzeugen muss, die kurz darauf nicht weiter referenziert werden, aber der träge GC die dinger nicht entsorgt und der (eh schon großzügig bemessene) heap space nach paar minuten gesprengt wird ^^

Das Entsorgen von vielen kurzlebigen Objekten ist garnicht mal wirklich teuer. Siehe folgendes Dokument, Punkt "What about deallocation":

http://www-128.ibm.com/developerworks/java/library/j-jtp09275.html

It turns out that for most objects, the direct garbage collection cost is -- zero. This is because a copying collector does not need to visit or copy dead objects, only live ones. So objects that become garbage shortly after allocation contribute no workload to the collection cycle.

Aber mal zum eigentlichen Thema. Meines Wissens nach ist es nicht möglich herauszufinden wie viele Referenzen auf ein Objekt zeigen, aber ich wüsste auch wirklich keinen Grund warum man das wissen wollen könnte. Ausserdem ist es für den GC nicht allein ausschlaggebend wieviele Referenzen auf ein Objekt zeigen, sondern ob eine Verbindung zu für den Programmablauf erreichbaren Objekten bestehen. 2-n Objekte die sich gegenseitig referenzieren, aber keine Verbindung zu erreichbaren Bereichen haben, werden vom GC trotzdem entfernt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kirby.exe Cannot make a static reference to the non-static field rimWidth Allgemeine Java-Themen 12
R Erste Schritte Object reference funktioniert nicht. Wie mach ichs richtig? Allgemeine Java-Themen 3
M Lambda "invalid method reference no suitable method found" Allgemeine Java-Themen 2
W Threads Cannot make a static reference.. Allgemeine Java-Themen 13
M Java - Call by value <-> Call by reference Allgemeine Java-Themen 16
S Cannot make a static reference to the non-static field MySecondClass.Points Allgemeine Java-Themen 3
Kr0e Circular reference - Serialisierung Allgemeine Java-Themen 6
E wie call by reference mit Wrapper-Klassen? Allgemeine Java-Themen 2
Schandro Warum illegal forward reference bei Exemplarinitialisierer Allgemeine Java-Themen 9
F Pointer oder Reference? Allgemeine Java-Themen 8
B Array von Vektoren by reference übergeben Allgemeine Java-Themen 5
conan2 "Cannot make a static reference to the non-static field Allgemeine Java-Themen 8
A Static reference to non-static field Allgemeine Java-Themen 10
sliwalker Call by Reference - Was stimmt denn nun ? Allgemeine Java-Themen 14
H Aus der FAQ: Call by Value <-> Call by Reference Allgemeine Java-Themen 8
O Pointer/reference on method Allgemeine Java-Themen 10
F JavaFX Gui hängt counter++ Allgemeine Java-Themen 0

Ähnliche Java Themen

Neue Themen


Oben