每個php變量存在一個叫"zval"的變量容器中闯参。包括四個字段:-name:字段值,-type:字段類型?悲立,-Is_ref:標(biāo)識這個變量是否是屬于引用集合變量鹿寨,-refcount:表示指向這個zval變量容器的變量(也稱符號即symbol)個數(shù) 。容器在”refcount“變成0時就被銷毀薪夕。
當(dāng)被變量引用時refcount+1脚草,當(dāng)變量撤掉時refcount-1,當(dāng)計數(shù)器=0時原献,表明內(nèi)存對象沒有被使用馏慨,該內(nèi)存對象則進(jìn)行銷毀,垃圾回收完成姑隅。
如果一個zval的refcount增加写隶,那么此zval還在使用,不屬于垃圾
如果一個zval的refcount減少到0讲仰, 那么zval可以被釋放掉慕趴,不屬于垃圾
如果一個zval的refcount減少之后大于0,那么此zval還不能被釋放叮盘,此zval可能成為一個垃圾秩贰,放入緩存區(qū)
緩存區(qū)達(dá)到臨界值時,遍歷刪除是垃圾的值
__destruct() 析構(gòu)函數(shù)柔吼,是在垃圾對象被回收時執(zhí)行毒费。?
unset 銷毀的是指向?qū)ο蟮淖兞浚皇沁@個對象愈魏。
=null?將變量指向空容器
debug_zval_dump($bianliang)//查看變量的refcount
session.gc_maxlifetime?
session.gc_probability?
session.gc_divisor?
session.gc_divisor 與 session.gc_probability合起來定義了在每個會話初始化時啟動gc(garbage collection 垃圾回收)進(jìn)程的概率觅玻。此概率用 gc_probability/gc_divisor 計算得來。例如 1/100 意味著在每個請求中有 1% 的概率啟動 gc 進(jìn)程培漏。session.gc_divisor 默認(rèn)為 100溪厘。