garbage collector prog

sh33p

Bekanntes Mitglied
Java:
public class Alpha {

  
  static int nummer;
  
  public Alpha (){
  nummer++;
  System.out.println("Objekt " + nummer + " wurde erzeugt.");
  }
  
  protected void finalize() throws Throwable{ 
  
    super.finalize();
          System.out.println("Objekt " + nummer + " wurde gelöscht.");   
          nummer--;
       }
    }
  public class GarbageTest {
    
    static public void main (String[] args) {
      
      int n = 8; /* Anzahl zu erzeugender Objekte */
      
      java.util.Scanner scanner = new java.util.Scanner (System.in);
      System.out.println ("Gib die Anzahl " + "zu erzeugender Objekte ein: ");
    
      try {
        n = scanner.nextInt();
      }
      catch (NumberFormatException e) {
        System.out.println (e.toString());
        System.exit (1);
      }
      for (int lv = 0; lv < n; lv++) {
        Alpha alphaRef = new Alpha();
      }
    }
}

Kann mir mal jemand erklären was das Prog und der Garbage Collector hier genau macht?
danke:)
 

nrg

Top Contributor
ich erklär nurmal mit eigenen worten die funktion des garbage collector. Bei jeder instanziierung von einem objekt wird irgendwo im speicher das objekt erstellt und in eine variable xyz die referenz auf das objekt geschrieben. wenn die variable xyz jetzt auf ein neues objekt2 referenziert (das einen ganz anderen speicherort wie objekt1 hat), ist objekt1 auschuss, weil es nicht mehr zu erreichen ist. diesen ausschuss beseitigt der garbage collector.

das ganze mal an einem beispiel:
Java:
	  String xyz = new String("Objekt1"); //1
	  xyz = "Objekt2"; //2

1, Ein Stringobjekt wird instantiiert und die Referenz (den ort, wo es zu finden ist) in die Variable xyz geschrieben.
2, Ein neues Stringobjekt wird instantiiert und die Referenz (den ort, wo es zu finden ist) in die Variable xyz geschrieben.
-> das erste Stringobjekt kann nicht mehr, auf keinem denkbaren weg, aufgerufen werden und ist deshalb ausschuss! die bereinigung übernimmt der garbage collector.
 
Zuletzt bearbeitet:

Meldanor

Bekanntes Mitglied
Bei einer Vorlesung hat der Lehrer mal ein schönes Beispiel gegeben:

Man geht Gassi und hat mehrere Hunde an der Leine. Die Hunde sind die Objekte und die Leinen sind die Referenzen auf die Objekte.
Solange die Hundeleine existiert, kann ich den Hund steuern.
Verliere ich jedoch eine Hundeleine, ist der Hund nicht mehr zu steuern und wird vom Tierfänger(Garbage Collector) geholt, damit der Hund nicht unbeaufsichtigt rumläuft.
...
der Garbage Collector entsorgt dann jedoch das Objekt und hält es nicht irgendwo zwischen, der Tierfänger sollte es nicht tun :D

Also:
Sobald du keine Referenz auf ein Objekt hast, kannst du dieses Objekt nie wieder ansprechen und es ist Datenmüll -> entsorgen.
 

FArt

Top Contributor
Sobald du keine Referenz auf ein Objekt hast, kannst du dieses Objekt nie wieder ansprechen und es ist Datenmüll -> entsorgen.

Leider nein. In der finalize()-Methode existiert das Objekt noch. Ein nicht sehr umsichtiger Programmierer kann jetzt wieder Referenzen auf das Objekt aufbauen...
Ähnliche Szenarien gibt es für Soft-, Weak- und Phantomreferences, die sind aber oft ein wenig konstruiert ;-)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Garbage collector Allgemeine Java-Themen 3
D Garbage Collector Allgemeine Java-Themen 3
A Garbage Collector Allgemeine Java-Themen 3
A Garbage Collector in NetBeans vs. exe Anwendung Allgemeine Java-Themen 33
L Garbage Collector lässt Programm kurz hängen Allgemeine Java-Themen 10
H2SO3- SCJP garbage collector frage Allgemeine Java-Themen 13
R Garbage Collector löscht anscheinend nichts Allgemeine Java-Themen 22
S Garbage Collector entlasten Allgemeine Java-Themen 2
JStickman Der Garbage Collector Allgemeine Java-Themen 13
P Threads ohne Referenz & der Garbage Collector Allgemeine Java-Themen 2
S Threads <-> Garbage Collector Allgemeine Java-Themen 2
M Java Garbage Collector Frage (Singleton Pattern) Allgemeine Java-Themen 13
P Garbage Collector funktioniert nicht richtig? Allgemeine Java-Themen 12
M Problem mit garbage collector Allgemeine Java-Themen 19
R Garbage Collector rennt die ganze Zeit Allgemeine Java-Themen 7
M Garbage Collector Allgemeine Java-Themen 5
T Garbage Collection Frage Allgemeine Java-Themen 15
B Garbage Collection Logfile: Binary File Allgemeine Java-Themen 2
hdi Garbage Collection Allgemeine Java-Themen 12
T Objekt der Garbage Collection zugaenglich machen? Allgemeine Java-Themen 7
F Frage zu Memory Leak, Garbage Collection und Profiler-Tools Allgemeine Java-Themen 6
M Wie lange dauert ein garbage collection Allgemeine Java-Themen 7
R Garbage Collection bei gegenseitiger Objektreferenz Allgemeine Java-Themen 2
M Garbage manuell loswerden Allgemeine Java-Themen 29
M garbage collection Allgemeine Java-Themen 14
G Frage zur Garbage Collection Allgemeine Java-Themen 5
H Collector Generics Problem (incl. Stream & Lambda) Allgemeine Java-Themen 4
P Grabage Collector Allgemeine Java-Themen 8
L Prog läuft in der IDE, hängt sich aber am Mac auf Allgemeine Java-Themen 0
F java prog als windows-dienst. Erfahrungen? Allgemeine Java-Themen 2
V [solved]Von Java Prog über ein JSP/Servlet auf DB zugreifen Allgemeine Java-Themen 3
Chris81T Performance Problem durch mehrfaches Starten eines JAVA Prog Allgemeine Java-Themen 8
R Java Standalone Prog zu Webapplikation umwandeln Allgemeine Java-Themen 14
S automatisches schließen des prog Allgemeine Java-Themen 2
M Fehlermeldung! (Problem mit einem Prog) Allgemeine Java-Themen 5
M Infos zu nem Prog an Fachschaften (KundenDB) Allgemeine Java-Themen 5
T doppelgeklickte Datei automatisch nach Start des Prog öffnen Allgemeine Java-Themen 2
R Signieren von Java-Prog. oder Applets - Zugriff auf dlls Allgemeine Java-Themen 8
S was bedeutet setZuname in diesen prog... Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben