我想知道是否有人能回答我這個簡短的問題。我嘗試搜索它,但我得到類似的問題,但在錯誤的背景下。PHP函數變量和垃圾回收器
我想知道的是採取這樣的代碼:
function foo()
{
$test_array = array();
for($i=0; $i<10000000; $i++)
{
$test_array[] = $i;
}
}
功能完成後會發生到$ test_array什麼。我知道它失去了範圍,我對編程並不陌生。
什麼我不知道是應該我叫
unset($test_array);
函數結束或函數結束時沒有PHP將其設置爲刪除垃圾收集過嗎?
我使用for循環只是爲了顯示一個公平的大小變量來獲得我的觀點。
感謝您閱讀 凱文
在我自己用'memory_get_usage()'測試(可能非常特定於平臺的情況下,用一點鹽) - 顯式取消設置變量似乎可以立即釋放內存。讓變量超出範圍肯定會標記變量可用於收集,但不一定會觸發收集器本身。 – gregheo 2012-03-02 21:17:28
unset()不會刪除,它只會標記爲刪除...並且垃圾收集不會由unset()或返回到調用例程觸發。正如編碼器說的那樣,當CPU有空閒週期時,或者當PHP嘗試分配額外內存並且沒有足夠的需求時,就會發生這種情況。 – 2012-03-02 21:22:15
據我所知,未設置不會調用垃圾回收器 – 2012-03-02 21:25:03