首頁  >  文章  >  後端開發  >  PHP的垃圾回收機制是怎麼樣的?

PHP的垃圾回收機制是怎麼樣的?

巴扎黑
巴扎黑原創
2016-11-08 10:55:17979瀏覽

   描述:PHP使用引用計數(reference counting)垃圾回收(garbage collection)機制,每個物件內含一個引用計數器,每當一個引用連接到物件時,計數器加1,當reference離開生成空間或被設定為NULL是,計數器減1,。當某個物件的參考計數器為0時,PHP引擎知道你將不再需要這個對象,釋放其所佔的記憶體空間。

        &操作是指針嗎?

        不是,&操作是建立了引用指向,不是指針,PHP沒有指針的概念。類似UNIX的檔案軟連結。

        Unset()操作與賦 null值操作的區別?

        (a)Unset()只是斷開這個變數對它原先指向的記憶體的引用,使變數本身成為沒有定義過的空引用,並且使那塊內存在符號表中引用計數減1,並沒有影響到其他指向這塊記憶體的變數。所以在呼叫這個unset()的變數時發出了Notice。 (對一個變數unset多次只有第一次起作用)

        (b)賦值null操作相當猛,它會直接將變數縮指向的內存在符號表中的引用計數置0,那塊記憶體自然被引擎回收了,至於何時被再次利用不得而知。可能馬上就被用來作為儲存別的訊息,也許再也沒有使用過。但無論如何,原來所有指向那塊記憶體的變數都無法再操作被回收的記憶體了,任何試圖呼叫它的變數都會講回null。

          存在於一個內存在符號表中的引用數為0 時,PHP引擎才會將此記憶體回收。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn