ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
232
232
EMPFEHLEN
-
HI
Wenn ich zwei Objekte habe die auf das jeweils andere zeigt, diese Objekte aber sonst nicht mehr referenziert sind (sprich, sie sind aus dem Code nicht mehr erreichbar). Werden diese vom garbage collector gelöscht oder liegen die dann für immer tod im Speicher rum?
Gruss
jeipackKonnte ich dir helfen? Dann würde ich mich über eine prositive Bewertung freuen ;)
----------------------
Pofessional tutorials.de lover ;)
-
08.04.09 13:33 #2
Soweit ich das gehört habe erkennt der Garbage Collector solche Konstellationen, kann ich aber nicht 100% sagen.
"... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)
"Sir?, we're sorrounded!"
"Excellent, we can attack in any direction"
-
08.04.09 18:18 #3
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 905
Wenn beide Objekte nicht mehr referenziert sind JA.
Dies kannst du durch Heap dump erzeugen und manuelles GC ausführen (oder lange genug warten
)(von der JConsole z.B.) herausfinden.
Wenn du genaueres wissen willst brauchen wir schon ein Beispiel
Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
-
Ein Beispiel? ja ok ich versuchs ein mal:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
class Workingclass { public Workingclass() { Yin yin = new Yin(); Yang yang = new Yang(); yin.setYang(yang); yang.setYin(yin); yin=null; yang=null; //yin und yang sind nun nicht mehr referenziert //besitzen allerdings untereinander noch eine Referenz. //werden diese Objekte nun gelöscht oder nicht? } public static void main(String[] args) { new Workingclass(); } } class Yin { Yang yang; public Yin() { } void setYang(Yang y) { yang=y; } } class Yang { Yin yin; public Yang() { } void setYing(Yin y) { yin =y; } } //(gefundene Fehler darf man behalten ;))
Das ist etwa das was ich meine. Eine Stufe weiter wäre noch wenn Yin/Yang noch eine Refferenz zum Workingclass-Objekt bekommen würden, würde das einen Unterschied machen? Eigentlich nicht oder?
GrussKonnte ich dir helfen? Dann würde ich mich über eine prositive Bewertung freuen ;)
----------------------
Pofessional tutorials.de lover ;)
-
09.04.09 10:23 #5
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 905
kurz um....ja.
Da es ja selbst nicht mehr referenziert ist wird es nicht gezählt und kann somit aufgeräumt werden.Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
Ähnliche Themen
-
Spring Application Context - wird er durch den Garbage Collector freigegeben?
Von DarthShader im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 1Letzter Beitrag: 24.08.10, 15:51 -
Applet, garbage collector wird nicht ausgeführt
Von lazydog im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 07.05.09, 18:59 -
Garbage Collector in C#?
Von Benny_Ben_Ben im Forum .NET CaféAntworten: 1Letzter Beitrag: 30.04.07, 09:15 -
Garbage-Collector!
Von lernen.2007 im Forum JavaAntworten: 2Letzter Beitrag: 28.12.05, 14:46 -
Problem mit Garbage Collector
Von Serethos im Forum JavaAntworten: 4Letzter Beitrag: 07.12.04, 16:21





Zitieren
Login





