Wie kann man Speicher in PHP freigeben?

9
%Vor%

Wird der für $ obj reservierte Speicher nach der Rückkehr freigegeben?

Wenn nicht, wie kann ich es befreien?

    
Jane 25.08.2011, 11:09
quelle

3 Antworten

2

PHP verwendet den Garbace Collector. Es gibt alle Variablen frei, für die keine Referenzen mehr vorhanden sind. Unter der Annahme, dass $ obj- & gt; importAFile () keinen Verweis auf $ obj zurückgibt, wird der Speicher freigegeben. Es gibt jedoch keine Garantie, wenn der Speicher freigegeben wird. Wenn $ obj einen Verweis auf sich selbst enthält, wird der Speicher in älteren Versionen von PHP ebenfalls nicht freigegeben. Weitere Informationen finden Sie in der PHP-Dokumentation

    
Maxim Krizhanovsky 25.08.2011 11:14
quelle
2

Wenn Sie unset () für eine Variable verwenden, haben Sie sie für "garbage collection" markiert, da PHP nicht wirklich über eine solche verfügt, sodass der Speicher nicht sofort verfügbar ist. Die Variable enthält nicht mehr die Daten, aber der Stapel bleibt auch nach dem Aufruf von unset () in der aktuellen Größe. Wenn Sie die Variable auf NULL setzen, werden die Daten gelöscht und der Stapelspeicher fast sofort verkleinert.

Dies hat bei verschiedenen Gelegenheiten für mich funktioniert, wo vor der Optimierung Warnungen mit Speichermangel ausgelöst wurden, und nachdem die Variable ungültig gemacht wurde, unset () aufgerufen wurde. Das Aufrufen von Unset nach dem Annullieren ist möglicherweise nicht notwendig, aber ich habe es trotzdem nach der Annullierung verwendet.

    
Babatunde Adeyemi 14.04.2012 05:38
quelle
0

Es verwaltet Speicher für Sie. Sie haben möglicherweise nur dann ein Problem, wenn zwischen Ihren Objekten einige Zirkelverweise vorhanden sind

    
Jakub M. 25.08.2011 11:14
quelle

Tags und Links