日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 垃圾回收机制----写时复制和引用计数

發布時間:2023/12/18 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 垃圾回收机制----写时复制和引用计数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  PHP使用引用計數和寫時復制來管理內存。寫時復制保證了變量間復制值不浪費內存,引用計數保證了當變量不再需要時,將內存釋放給操作系統。

  要理解PHP內存管理,首先要理解一個概念----符號表。

  符號表的概念:

  一個變量有兩部分組成:變量名和變量值。而符號表就是將變量名映射到內存中變量值所在地址的數組。

  寫時復制:

  當一個變量的值復制到另一個變量時,PHP沒有為復制值使用更多的內存。相反,他會跟新符號表來說明這兩個變量擁有相同的內存塊。所以下面的代碼實際上并沒有創建新數組:

      <?php

        $people = array( "Alice","Bob" );

        $other ?= $people;  //數組并沒有被復制

      ?>

  如果修改任何一個副本,PHP將分配所需的內存來進行復制:

  $people[ 1 ] = "Tom";  //值改變,數組被復制,分配新的內存

  通過延遲分配和復制,PHP在很多情形下節省了時間和內存,這就是寫時復制。

  引用計數:

  符號表中沒喲個職都有一個引用計數器,,它的值表示獲取那片內存的方式的數目。

  在給$people和$other初始化賦值后,數組指向符號表,$people和$other引用計數器的值為2.換句話說,那一片內存有兩種方式可以得到:$people和$other。

  但是當$people[ 1 ]的只改變之后,PHP為$people創建一個新的數組,這時,$people和$other的引用計數器的值都為1.當一個變量離開作用域,如函數參數和局部變量到達函數末尾時,應用計數器的值減去1.當一個變量在其他內存空間被賦值時,舊值得引用計數減1。當引用計數的值為0時,他的內存被釋放。

  這就是引用計數。

  引用計數是首選的內存管理方式。保持變量作用域限制于函數中,通過值來傳遞,并讓引用計數負責內存管理。如果你想主動獲得更多的信息或者控制權來釋放一個變量的值,可以使用isset()和unset()函數。

轉載于:https://www.cnblogs.com/phpcoder/p/4462210.html

總結

以上是生活随笔為你收集整理的php 垃圾回收机制----写时复制和引用计数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。