Ankündigung

Einklappen
Keine Ankündigung bisher.

Garbage Collection

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    @cycap: JEGO: "kann mir jemand sagen ob man diesem Artikel glauben kann?"

    Kommentar


    • #17
      @phphatesme: cycap: "kann mir jemand sagen ob man diesem Artikel glauben kann?"!
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #18
        Zitat von phphatesme Beitrag anzeigen
        Brauchst ihn also nicht, ohne Fakten aufzuführen, schlecht machen. Das ist das einzige, was ich von dir verlange.
        zum letzten mal:

        1. ich habe zu beginn des threads meinen persönlichen eindruck geschildert; das hat mit schlecht machen nichts zu tun.
        2. hör endlich auf, rumzuheulen und dich zu rechtfertigen; lerne statt dessen, mit kritik umzugehen.
        3. erzähl mir nichts von 1000 fliegen und einem grossen haufen sch***
        4. du hast gar nichts von mir zu verlangen, du machst doch auch, wozu du lust hast.
        5. du solltest das ganze in deinem blog aufarbeiten - deine leser lieben dich und werden dir zuspruch spenden.

        die diskussion ist an dieser stelle für mich beendet.

        cx

        Kommentar


        • #19
          War zu erwarten.
          Sorry musste das letzte Wort haben. Einfach weil ich Lust hatte.

          Kommentar


          • #20
            Zitat von phphatesme Beitrag anzeigen
            @cycap: JEGO: "kann mir jemand sagen ob man diesem Artikel glauben kann?"
            Zitat von nikosch
            @phphatesme: cycap: "kann mir jemand sagen ob man diesem Artikel glauben kann?"!
            looool

            Kommentar


            • #21
              Diesen Artikel von php hates me kannst Du prinzipiell schon ernst nehmen. PHP hat seit Jahr und Tag ein gewisses Problem mit zyklischen Referenzen. Auch richtig ist, dass es einen Patch dagegen gibt, der mit 5.3 übernommen wurde.

              Allerdings: Man kann bei PHP extrem leicht Speicher verschenken. Zyklische Referenzen in adequater Menge um den Speicher vollaufen zu lassen, produziert man eigentlich nur im Ausnahmefall. Ich persönlich weiß nicht, was Du da machst, und ich kenne Deinen (Cycaps) Programmierstil nicht, ich würd aber vorher wirklich erstmal versuchen, alle anderen Ursachen auszuschließen.

              Der Vollständigkeit halber kannst Du ja mal versuchen, die hier vorgeschlagene Userland Solution in Dein Projekt zu integrieren, aber wie gesagt...

              Gruß Jens

              Kommentar


              • #22
                Hallo Jens,

                ich hatte bereits geschrieben was genau ich tue (haste vielleicht überlesen?) und da Doctrine anscheinend für das gleiche Problem einen workaround geschrieben hat liegts wohl nicht an meinem Programmierstil, mal abgesehen davon, das ich das ORM ja gar nicht selbst programmiert habe. Mein TESTscript dafür beinhaltet ja nicht viel:

                PHP-Code:
                $step 1000;
                $start 0;
                $count StockCollection::ProvideBySQL('SELECT COUNT(*) count,1 ident FROM stock')->GetEntry()->calculatedFields['count'];
                $ways ceil($count/$step);
                for(
                $x=0;$x<$ways;$x++){
                    
                $data StockCollection::ProvideBySQL('SELECT * FROM stock LIMIT '.$start.','.$step);
                    
                $start $start $step;
                    unset(
                $data);

                StockCollection ist halt das ORM... was da drin passiert geht mich eigentlich nichts an... ich hoffe die Entwickler des ORMs liefern mir bald ne free()-Methode, weil ich sonst nicht mit mehr als 5000 Datensätzen (bei 512 MB Ram für den Indianer) arbeiten kann

                Kommentar


                • #23
                  Ja, sorry, das hatte ich wirklich überlesen. Dein Problem ist dann aber nicht von Deiner Seite aus lösbar, falls es sich denn wirklich um ein Problem mit zyklischen Referenzen handelt. Es kann ja durchaus auch sein, dass StockCollection sich wo ganz anders verfranst.

                  Der o.g. Skriptteil kann auf jeden Fall schon mal nicht für den Speicherwahnsinn verantwortlich sein. Wobei Du ja durchaus testen kannst, ob es sich um ein Problem mit zyklischen Referenzen handelt, indem Du einfach mal irgendwo eine 5.3er Version aufsetzt und schaust, was der optimierte GC daraus macht...

                  Gruß Jens

                  Kommentar


                  • #24
                    hi,

                    zunächst einmal ist festzuhalten, das PHP wirklich nicht immer direkt den speicher freigibt. dies ist nicht dem Garbage Collector direkt zuzuschreiben, sondern vor allen dingen den caches und typproblemen.

                    ein problem von PHP ist, das es speicher eben anhand der daten reservieren muss weil nichts weiteres - wie z.b. datentypen - definiertist. so wird PHP beim system bei folgendem bis script ende (wahrscheinlich) mindestens speicher für den ersten block reserviert:

                    PHP-Code:
                    $a='asdfasdfasdfasdfasdfasdfasdf';
                    $a='a'
                    das 2. problem ist, das um RAM zu reservieren ein system aufruf erforderlich ist - das sind performance engpässe die es zu vermeiden gilt.

                    um zum artikel zu kommen:

                    PHP uses an array internally to store all objects. When you create more
                    objects, the array is grown. When you destroy some objects, the array is
                    not resized, so that creating other objects is faster.

                    This is the difference you see; ~32 bytes per object.

                    This is not due to the allocator. There is a few other caches of this
                    kind in PHP that make it running faster.
                    siehe.

                    ein weiteres problem (besonders bei komplexen scripten) sind referenzen*, die genutzt werden um so wenig duplikate wie möglich zu erhalten. ich muss mal schauen, ob ich das PDF wieder finde.

                    * referenzen werden automatisch erzeugt, z.b.:

                    PHP-Code:
                    $a=1;
                    $b=$a;
                    debug_zval_dump($a); // refcount(2) 
                    $b zeigt hier ohne zutun auf den speicherbereich von $a
                    [B]PHP4?!?[/B]>>>[B]Aktuelle[/B] PHP Version: [B]5.2.11 || 5.3.0
                    [URL="http://en.opensuse.org/Factory/News"]Suse 11.2 *vorfreude*[/URL]
                    [/B]

                    Kommentar

                    Lädt...
                    X