Announcement

Collapse
No announcement yet.

G1 Garbage Collector in Java 7

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • G1 Garbage Collector in Java 7

    Hallo,

    habe eine Frage bzgl. des G1 Garbage Collectors (bzw. des älteren CMS-Garbage Collectors):

    Wie geht der Garbage Collector mit Objekten von bspw. doppelt verketteten Listen um,
    wenn das erste Objekt, das auf die anderen Objekte referenziert, mit einem expliziten Destruktoraufruf zerstört wird?

    Werden dann die Objekte, auf die referenziert wurde auch zerstört und der jeweilige Speicherbereich freigegeben oder bleiben die Objekte, auf die referenziert wurde, im Heap bzw. Stack?

    Wenn jemand eine Möglichkeit weiß, wie man das testen könnte, wäre ich sehr dankbar.

    Grüße
    JavaNewbie
    Zuletzt editiert von Bernhard Geyer; 09.09.2011, 09:22.

  • #2
    wenn das erste Objekt, das auf die anderen Objekte referenziert, mit einem expliziten Destruktoraufruf zerstört wird?
    Wie sollte das in Java passieren? Es gibt keinen Destruktor in Java. Es obliegt dem GC aufzuräumen. Wenn es auf ein Objekt keine Referenzen mehr gibt, zerstört er es

    Wenn jemand eine Möglichkeit weiß, wie man das testen könnte, wäre ich sehr dankbar.
    Es gibt da nichts zum testen
    Christian

    Comment


    • #3
      Originally posted by Christian Marquardt View Post
      Wie sollte das in Java passieren? Es gibt keinen Destruktor in Java. Es obliegt dem GC aufzuräumen. Wenn es auf ein Objekt keine Referenzen mehr gibt, zerstört er es
      Laut Guido Krüger / Thomas Stark (Handbuch der Java-Programmierung, 6. aktualisierte Auflage, Addison-Wesley-Verlag) aber auch anderer Quellen wird ein Destrukor folgendermaßen umgesetzt:

      (S. 174 unten, 7.3.8 Destruktoren)
      Ein Destruktor wird als geschützte (protected) parameterlose Methode mit dem Namen finalize definiert:

      Code:
      // Overrides the finalize()-method in class java.lang.Object
      @Overrride
      protected void finalize() { ... }

      Comment


      • #4
        Dannlies auch richtig:

        Das ist lediglich die "Aufforderung" an den GG mal zu schauen, ob er das Objekt zerstören kann. Das heisst nicht, dass das Objekt auch zerstört wird. Das ist kein Destruktor wie in C/C++. Üblicherweise wird das auch nicht in Java genutzt
        Christian

        Comment

        Working...
        X