亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP垃圾回收機制理解

發布時間:2020-08-13 18:36:49 來源:網絡 閱讀:486 作者:new個對象 欄目:web開發

使用的是“引用計數”方式進行回收。簡單地理解的話,就是每個分配的內存區域都有一個計數器,記錄有多少個變量指針指向這片內存。當指向該片內存的指針數量為0,那么該片內存區域就可以被回收。
引用計數計數簡單,強大,但是有一個致命的缺陷,就是環狀引用。考慮以下的代碼:
Php代碼
$a = array();
$a[] = &$a;
unset($a);
變量$a引用了自己,形成了一個環。$a被unset了,可是由于存在環狀引用,因此$a之前指向的內存的引用計數為1,因此該內存區域不會被垃圾回收機制回收。

PHP5.3針對這個重大的缺陷做了優化。雖然其基礎仍然是引用計數,但是在做了一些改良,能夠將環狀引用導致的內存泄露控制在一定的規模以內。當然,這并不是說你可以隨便濫用內存,編寫代碼時仍然要小心為上!

其他要點:
1.PHP腳本運行完畢,該腳本申請的所有內存空間都會釋放,不管是否存在環狀引用。因此環狀引用內存泄露的問題一般只影響長時間運行的程序腳本。

2.垃圾回收機制需要滿足一定的條件才會執行。因此unset后,系統并不一定會立即回收垃圾。

3.unset的作用。
“unset只是斷開一個變量到一塊內存區域的連接,同時將該內存區域的引用計數-1”。也就是說,如果有一個以上的變量指向同一個內存區域,或者存在環狀引用,那么unset不會使內存區域釋放。斷開也說明unset并不會直接刪除內存區域,而只是改變其引用計數而已。

4.$xx=null的作用。
“$a = null 是直接將$a 指向的數據結構置空,同時將其引用計數歸0”。根據我對這個定義的理解,=null操作可以立即釋放掉內存空間!因此很多PHP技巧中不厭其煩地對我們說,先將變量設為null,再unset。理解其深層原理后,我才徹底理解了這樣做的原因!=null才是王道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜城市| 东乡县| 海伦市| 洪雅县| 垣曲县| 若羌县| 卢龙县| 图片| 廊坊市| 庆阳市| 古丈县| 沈丘县| 金湖县| 新沂市| 张家川| 怀集县| 石首市| 稷山县| 冕宁县| 抚宁县| 灌云县| 兴文县| 合作市| 连云港市| 乐至县| 丰镇市| 商河县| 绵竹市| 漾濞| 顺义区| 金华市| 沈阳市| 德兴市| 扎鲁特旗| 东海县| 潞城市| 买车| 城固县| 盱眙县| 甘德县| 同江市|