Sadrak: Garbage Collector umgehen

OK, das muss doch möglich sein, das der meine Objekt in ruhe lässt :)

Achja, ich bins wieder *g*

OK, aktuelles Problem ist, das der Garbage Collektor bei Perl was löscht, was ich eigentlich noch brauche. Ich habe was gehört von Referenzen in sich verschachteln, damit das Objekt nicht löscht ... aber nach mitlerweile 1 1/2 Stunden suchzeit habe ich um diese Zeit kein Bock mehr mir noch konfusere Gedanken zu machen, was ich bei Google wohl eingeben muss, damit ENDLICH ne Seite kommt wo was brauchbares steht :) Darum nochmal hier die Frage:

Wie kann ich den GarbageCollector umgehen und vorallem WIE realisiere ich das dann? ALso bitte mit einem BSP dabei oder einem link, da ich nichts dergleichen im Inet gefunden habe.

  1. Hallo,

    nexte mal die Nachfrage bitte im selben Thread posten.

    OK, das muss doch möglich sein, das der meine Objekt in ruhe lässt :)

    Nein.

    OK, aktuelles Problem ist, das der Garbage Collektor bei Perl was löscht, was
    ich eigentlich noch brauche. Ich habe was gehört von Referenzen in sich
    verschachteln, damit das Objekt nicht löscht ...

    Das ist Unfug. Damit stellst du hoechstens ein Memory Leek her. Und nichtmal das
    dauerhaft: sobald das Script beendet ist, ist der Speicher aufgeraeumt, basta.

    Deine Alternativen habe ich dir aufgezaehlt: Serialisierung des Objektes,
    sprich, du erstellst einen String, der das Objekt beschreibt oder CORBA, also
    ein Server-Dienst, der das Objekt die ganze Zeit im Speicher haelt und ueber
    eine Schnittstelle die Methoden zur Verfuegung stellt.

    aber nach mitlerweile 1 1/2 Stunden suchzeit habe ich um diese Zeit kein Bock
    mehr mir noch konfusere Gedanken zu machen, was ich bei Google wohl eingeben
    muss, damit ENDLICH ne Seite kommt wo was brauchbares steht :)

    Du wirst nichts finden.

    Wie kann ich den GarbageCollector umgehen und vorallem WIE realisiere ich das
    dann?

    Gar nicht. Du solltest dein Software-Design noch einmal genauestens ueberdenken
    und dabei den Lebenszyklus eines Objektes in Perl beruecksichtigen.

    Gruesse,
     CK

    1. Hallo

      OK, aktuelles Problem ist, das der Garbage Collektor bei Perl was löscht, was
      ich eigentlich noch brauche. Ich habe was gehört von Referenzen in sich
      verschachteln, damit das Objekt nicht löscht ...

      Ich kenne zwar mich nicht mit dem Perl Garbage Collector aus, aber normalerweise arbeiten die so, dass solange eine Referenz darauf verweist die nicht "weggeräumt" werden. So sollte es auch der Perl-GC halten. Alles andere wäre ja unlogisch.
      Wenn keine Referenz mehr darauf verweist hast Du ohnehin keine Möglichkeit mehr darauf zuzugreifen.
      Deshalb verstehe ich auch Dein Problem nicht so ganz. Beschreibe es mal genauer.

      Das ist Unfug. Damit stellst du hoechstens ein Memory Leek her. Und nichtmal das
      dauerhaft: sobald das Script beendet ist, ist der Speicher aufgeraeumt, basta.

      Memory-Leak? Bei sich gegenseitig referenzierenden Objekten? Also wenn der GC wie oben beschrieben arbeitet (wovon ich mal ausgehe), dann ist sowas schlicht und ergreifend nicht möglich!

      Deine Alternativen habe ich dir aufgezaehlt: Serialisierung des Objektes,
      sprich, du erstellst einen String, der das Objekt beschreibt oder CORBA, also
      ein Server-Dienst, der das Objekt die ganze Zeit im Speicher haelt und ueber
      eine Schnittstelle die Methoden zur Verfuegung stellt.

      Ups .... was sind das nur für Vorschläge. Serialisieren tut man, wenn man ein Objekt "dauerhaft" (über die Laufzeit des Skripts hinaus) aufbewahren will oder übertragen möchte. Und Corba ..... man kann es für solche Dinge verwenden, aber ist doch arg übertrieben.

      Wie kann ich den GarbageCollector umgehen und vorallem WIE realisiere ich das
      dann?

      Ich schließe mich hier CK an. Im Normalfall ist das umgehen nicht notwendig, ja sogar gefährlich.
      Aber vielleicht bringt die genauere Schilderung Deines Problems Aufschluss über das, was Du willst.

      Gruss
         MichaelB

      1. Hallo,

        Ich kenne zwar mich nicht mit dem Perl Garbage Collector aus, aber
        normalerweise arbeiten die so, dass solange eine Referenz darauf
        verweist die nicht "weggeräumt" werden. So sollte es auch der
        Perl-GC halten. Alles andere wäre ja unlogisch.

        Dem ist auch so. Aber es werden *alle* Referenzen aufgeloest, wenn
        das Script beendet wird.

        Das ist Unfug. Damit stellst du hoechstens ein Memory Leek her.
        Und nichtmal das dauerhaft: sobald das Script beendet ist, ist
        der Speicher aufgeraeumt, basta.
        Memory-Leak? Bei sich gegenseitig referenzierenden Objekten? Also
        wenn der GC wie oben beschrieben arbeitet (wovon ich mal ausgehe),
        dann ist sowas schlicht und ergreifend nicht möglich!

        Es war von einem Objekt die Rede, das auf sich selbst verweist. Und
        damit wird duchaus ein Memory Leek hergestellt: es koennen ruhig alle
        externen Referenzen geloescht sein, die Referenz im Objekt selber ist
        immer noch vorhanden und kann auch nicht aufgeloest werden. Und schon
        hat man einen feinen Memory Leek.

        Ups .... was sind das nur für Vorschläge. Serialisieren tut man,
        wenn man ein Objekt "dauerhaft" (über die Laufzeit des Skripts
        hinaus) aufbewahren will oder übertragen möchte.

        Darum ging es doch. Das stellt hier aber eine enorme
        Sicherheitsluecke dar, wie ich bereits ausgefuehrt habe: das Objekt
        wird ueber ein Formular uebermittelt. So kann sich ein User ein
        beliebiges Objekt selber zusammenstricken und die Daten manipulieren.

        Und Corba ..... man kann es für solche Dinge verwenden, aber ist
        doch arg übertrieben.

        Nein. Das ist eigentlich eine normale Vorgehensweise, wenn ein Objekt
        ueber n Instanzen erhalten bleiben soll.

        Gruesse,
         CK

        1. Hallo CK,

          hm .... also ich hatte die Frage so verstanden das Objekte einfach gelöscht werden _während_ der Laufzeit des Skripts.
          Hab jetzt nochmal das Ausgangsposting gelesen und komme auch so keinem anderen Ergebnis.

          Naja .... er soll nochmal genau schreiben, was das Problem ist und was er will. Dann klärt sich das hoffentlich auf.

          Gruß
             MichaelB