2. Referenzieren-Dereferenzieren

Submitted by javafrage on Thu, 09/05/2013 - 08:58
public class Person {
   public Person vater;
   public Person mutter;

   public static void main (String[] args ) {
      Person p1 = new Person();
      Person p2 = new Person();
      p1.vater = p2;
      p2 = null;
      // Zeitpunkt 1
     execute(p1);
     // Zeitpunkt 3
   } // Ende main

   public static void execute(Person p) {
      Person[] persFeld = new Person[2];
      persFeld[1] = p;
      persFeld[0] = new Person();
      persFeld[0].vater = new Person();
      persFeld[0].mutter = new Person();
      // Zeitpunkt 2
   } // Ende execute()
} // Ende Klasse Person

Zum Zeitpunkt 1 ergibt sich das folgende Modell für den Stapel (Stack) und den Objekt-Heap:

Heapdarstellung mit Javaobjekten

  • Aufgabe 1: Tragen Sie im Diagramm die zum Zeitpunkt 2 angelegten Objekte auf Heap und Stack ein. Nutzen Sie bitte den Diagrammstil wie vorgegeben.
  • Aufgabe 2: Markieren Sie das Objektmodell zum Zeitpunkt 3 im gleichen Diagramm:
    • Markieren Sie alle nicht erreichbaren Objekte mit der Bemerkung: „nicht erreichbar“.  Diese Objekte sind Kandidaten zum Löschen durch den „Garbagecollector“,

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 6+6 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 1: Dereferenzieren von Objekten

Durch das explizite Dereferenzieren kann man „Memory leaks“ vorbeugen. Die dereferenzierten Objekte können dann wahrscheinlicher vom Garbage-collector gelöscht werden

Antwort zu Frage 2: Referenzieren-Dereferenzieren

public class Person {
   public Person vater;
   public Person mutter;

   public static void main (String[] args ) {
      Person p1 = new Person();
      Person p2 = new Person();
      p1.vater = p2;
      p2 = null;
      // Zeitpunkt 1
      execute(p1);
      // Zeitpunkt 3
   } // Ende main

   public static void execute(Person p) {
      Person[] persFeld = new Person[2];
      persFeld[1] = p;
      persFeld[0] = new Person();
      persFeld[0].vater = new Person();
      persFeld[0].mutter = new Person();
      // Zeitpunkt 2
   } // Ende aufrufen()
} // Ende Klasse Person

Zum Zeitpunkt 3 ergibt sich das folgende Modell für den Stapel (Stack) und den Objekt-Heap:

Heapdarstellung mit Javaobjekten