亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

PHP 弱引用的相關總結

瀏覽:80日期:2022-09-07 14:13:01

之前的文章中,我們已經學習過引用和引用傳值相關的知識。我們知道,PHP 中沒有純引用(指針),不管是對象,還是用引用符號 & 賦值的變量,都是對一個符號表的引用。而今天,我們要學習的是另一種引用形式:弱引用。

什么是弱引用

弱引用允許程序員保留對對象的引用,而該對象不會阻止對象被銷毀;它們對于實現類似緩存的結構非常有用。

這是比較官方的解釋。從這個說明中,我們可以看出,弱引用也是一種引用形式,但是,如果我們銷毀了原來的對象,那么弱引用對象也會被銷毀,就像普通的值對象賦值一樣。如果沒有看過之前的文章,或者對 PHP 中的引用不太熟悉的朋友可能需要再了解一下 PHP 中引用相關的知識。下面,我們直接通過示例來看一下。

WeakReference

$obj = new stdClass;$weakref = $obj;var_dump($weakref);// object(stdClass)#1 (0) {// }unset($obj);var_dump($weakref);// object(stdClass)#1 (0) {// }$obj1 = new stdClass;$weakref = WeakReference::create($obj1);var_dump($weakref->get());// object(stdClass)#2 (0) {// }unset($obj1);var_dump($weakref->get());// NULL$weakref = WeakReference::create(new stdClass);var_dump($weakref->get());// NULL

第一個對象 $obj 我們進行直接的賦值引用,也就是 PHP 默認的對象賦值。這時候,$weakref 保存的是對象符號表的引用。當我們 unset() 掉 $obj 時,$weakref 依然能夠正常使用。也就是說,$weakref 對 $obj 原始對象的內存引用依然保持著。不管我們怎么 unset() 原始的 $obj ,都只是切斷了 $obj 的引用符號表,對真正的對象沒有影響,垃圾回收器也不會徹底的回收最最原始的 $obj 對象內容。

第二個對象我們使用的是 WeakReference 的 create() 方法來創建的弱引用,當我們銷毀 $obj1 后,$weakref 也會變成 NULL 。這就是弱引用的作用!

它可以讓垃圾回收器正常的回收,它可以避免循環引用帶來的內存泄漏問題,它能讓引用表現為類似于 C 中的指針操作一樣。

最后一段代碼是我們通過 WeakReference::create() 中直接使用 new 來創建對象。這種形式是不行的,會一直返回 NULL 。因為弱引用是通過變量來創建的,它指向的是原始對象的符號表,而變量和對象之間的符號表連接才是弱引用關心的內容,它會根據符號表的狀態來判斷當前的狀態。如果原始對象變量切斷了與符號表的連接,那么弱引用的變量也會同步切斷,這樣,垃圾回收器就能正常的清理這個已經沒有任何引用計數的對象了。

注意

這里需要注意的是,上面的測試代碼必須在 PHP7.4 及以上版本才有用,WeakReference 類是 PHP7.4 新增加的內容。之前的版本需要安裝 WeakRef 這個擴展才能實現弱引用的能力,具體的內容可以查閱下方鏈接中的相關的文檔。

測試代碼:

https://github.com/zhangyue0503...

以上就是PHP 弱引用的相關總結的詳細內容,更多關于PHP 弱引用的資料請關注好吧啦網其它相關文章!

標簽: PHP
相關文章:
主站蜘蛛池模板: 亚洲一区二区三区四区热压胶 | 欧美日韩亚洲高清不卡一区二区三区 | 亚洲综合套图 | 国产在线观看精品 | 特级深夜a级毛片免费观看 特极毛片 | 国产伦子一区二区三区四区 | 曰曰啪天天拍视频在线 | 日本一级特黄特色大片免费视频 | 成人午夜做爰视频免费看 | 一级毛片日本特黄97人人 | 黄色视屏免费看 | 国产凹凸在线观看一区二区 | 香蕉视频网站在线 | 美国特级成人毛片 | 国产三级a三级三级午夜 | 亚洲国产中文字幕 | 成人区精品一区二区不卡亚洲 | 国产肥老妇视频∵ | 免费在线一级片 | 免费视频片在线观看大片 | 一区二区在线视频免费观看 | 亚洲福利院 | 久久精品一 | jizz亚洲女人高清 | 国产免费av片在线观看 | 日韩视频在线观看中字 | 黄色大片免费看 | 婷婷色九月 | 国产高清天干天天美女 | 毛片视频网站在线观看 | 91视频专区 | 久久久久久久久久久9精品视频 | 亚洲人成在线观看一区二区 | 欧美一级毛片在线看视频 | 免费欧洲毛片a级视频老妇女 | 中文字幕在线久热精品 | 亚洲国产精品综合久久久 | 日韩在线视精品在亚洲 | 中出在线播放 | 老司机日日摸夜夜摸精品影院 | 99在线观看视频免费精品9 |