Arbeitsspeicher wieder freigeben

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

  • Arbeitsspeicher wieder freigeben

    Hallo Leute,

    ich habe folgendes Problem:

    Auf meinem Server ist die Menge an Arbeitsspeicher, die ein Skript allokieren darf auf 300 MB eingestellt. Diese Grenze habe ich vor kurzem erreicht und habe mich an selbiges gesetzt und versucht Speicherplatz wieder freizugeben, indem ich Variablen per unset() lösche.

    Per memory_get_usage() habe ich mir den Speicherplatzbedarf an verschiedenen Stellen im Skript angeschaut. Auffällig ist, dass durch Löschen von Variablen der Speicherverbrauch des Skriptes nicht sinkt.

    Nach einiger Recherche habe ich herausgefunden, dass es in PHP einen sogenannten Garbage Collector gibt, der die Speicherverwaltung übernimmt und den Speicher nach seinem eigenen "Zeitplan" freigibt, wenn er merkt, dass es keine Referenzen mehr auf Variablen gibt, die Speicherplatz belegen.

    Sehe ich das richtig, dass es für mich nun keine Möglichkeit gibt, während der Laufzeit des Skriptes tatsächlich Speicher freizugeben?

    Danke für eure Antworten!

    Gruß Tarlar

    Edit: Es handelt sich um PHP Version 5.2.4
    Zuletzt geändert von Tarlar; 06.03.2012, 15:38.

  • #2
    Sind in dem Script noch Referenzen auf die "gelöschte" Variable vorhanden? Oder nutzt du sogar Objekte die sich zyklisch referenzieren? Der GC von PHP < 5.3 hat da so seine Probleme mit.
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar

    Lädt...
    X