1. 程式人生 > >PHP記憶體釋放有關的操作

PHP記憶體釋放有關的操作

1、&符號的影響
顯式引用一個變數,會增加該記憶體的引用計數:
$a = "something";
$b = &$a;

此時unset($a), 但是仍有$b指向該記憶體區域的引用,記憶體不會釋放。

2、unset函式的影響
unset只是斷開一個變數到一塊記憶體區域的連線,同時將該記憶體區域的引用計數-1;但是在迴圈體內部,例如:$a=new A(); unset($a);並不會將$a的引用計數減到零;

3、對變數賦null值操作的影響;
$a = null 是直接將$a 指向的資料結構置空,同時將其引用計數歸0。

4、指令碼執行結束的影響
指令碼執行結束,該指令碼中使用的所有記憶體都會被釋放,不論是否有引用環。

那麼以上介紹了這麼多和記憶體有關的東西,但是記憶體的回收都是由PHP的垃圾回收程序來進行的。當然你也可以像寫C一樣,自己手動回收程序,對所使用的變數進行null賦值。但這樣會增加了程式的複雜度,而一般對於PHP來說不建議這樣做,如果像你的問答裡說的,在處理大量和執行時間長的程式碼裡,那最好還是手動去銷燬一些不使用的變數。並且可以通過memory_get_usage和memory_get_peak_usage等函式監測記憶體的使用情況。