2010-12-11 9 views
0

Ich habe wirklich seltsam Problem:Speicherzuweisung Problem - PHP

Fatal error: Allowed memory size of 134217728 bytes exhausted 
(tried to allocate 21748 bytes) 

Ich verstehe, dass Fehler aber ich alle Speicherzuweisung für Skript bin Tracking und seine nicht oben bekommen: 2.883.584 insgesamt.

Die Zeile vor dem Fatalen Fehler wird ausgelöst, die tatsächliche Speichernutzung liegt bei 2883584. Wie im obigen Fehler beschrieben, versucht das Skript, nur 21748 weitere zuzuweisen, was nicht zu 134217728 führt.

Irgendwelche Ideen, warum es so ist?

P.S. für Speicherzuweisung Verwendung Ich verwende: memory_get_usage(true) Funktion.

+0

Überprüfen Sie für alle Endlosschleifen. – Mchl

+0

auch, erwähnenswert Ich führe es in cli als Shell-Skript – Marcin

+0

keine Endlosschleifen, überprüft, dass – Marcin

Antwort

0

OK, also ich denke, ich habe das Problem herausgefunden. Wie es sich herausstellt, wenn es ein hartes Bild gibt, um GD2-Zuordnungsspeicher zu verarbeiten, aber Sie können es nicht in memory_get_usage sehen und get_peak so ziemlich lahm aber ...

1

Überlegen Sie, ob Sie true an memory_get_usage übergeben, wodurch die tatsächliche Menge an zugewiesenem Systemspeicher zurückgegeben wird (statt nur emalloc). Die Laufzeit bezieht sich wahrscheinlich auf den Systemspeicher, der beim Beenden des Skripts verwendet wird, der viel höher sein kann (z. B. durch Erweiterungen, die keine emalloc10 Werte sind).