怎么在PHP中实现一个垃圾回收机制

  介绍

这篇文章给大家介绍怎么在PHP中实现一个垃圾回收机制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<>强顽固垃圾的产生过程

& lt; PHP ?   时间=美元才能a “new  string";   ?在

代码中,<代码> $> 答:,(refcount_gc=1, is_ref_gc=0)=& # 39; new 字符串# 39;

当把,,,,,,,一个,,,,,赋,,,,,值,,,,,给,,,,,另,,,,,外,,,,,一,,,,,个,,,,,变,,,,,量,,,,,的,,,,,时,,,,,候,,,,,,,,,,,一个赋值给另外一个变量的时候,,,,,一个赋值给另外一个变量的时候,一个对应的zval的<代码> refcount_gc> & lt; php ?   时间=美元才能a “new  string";   时间=美元才能b 一美元;   祝辞;

此时,,,,,,,一个,,,,,和,,,,,,一个和,,,a和b,变量对应的内部存储信息为,,,,,,,,一个,,,,,和,,,,,,一个和,,,a和b,同时指向一个字符串“新string",它的refcount变成2

a, b:, (refcount_gc=2,, is_ref=0)=& # 39; new 字符串# 39;

当用设置删除b美元变量时,“新字符串”的refcount_gc会减1变成1 .

& lt; php ?   a 美元;=,才能“new  string",,//:, (refcount_gc=1, is_ref_gc=0)=& # 39; new 字符串# 39;   b 美元;才能=,美元一个,,,,,,,//a, b:, (refcount_gc=2,, is_ref=0)=& # 39; new 字符串# 39;   设置才能($ b);,,,,,//:, (refcount_gc=1, is_ref=0)=& # 39; new 字符串# 39;   祝辞;

对于普通的变量来说,这一切很正常,但是在复合类型变量(数组和对象)中,会发生比较有意思的事情:

& lt; php ?   时间=美元才能a 数组(& # 39;意义# 39;,=祝辞,& # 39;生活# 39;,,& # 39;数字# 39;,=祝辞,42);   ?在

<代码> $ 内部存储信息为:

答:,(refcount=1, is_ref=0)=array  (   & # 39;意义# 39;,=祝辞,(refcount=1, is_ref=0)=& # 39;生活# 39;   & # 39;数字# 39;,=祝辞,(refcount=1, is_ref=0)=42   )

数组变量本身(美元)在引擎内部实际上是一个哈希表,这张表中有两个zval项意义和号码,所以实际上那一行代码中一共生成了3个zval,这3个zval都遵循变量的引用和计数原则,用图来表示:
怎么在PHP中实现一个垃圾回收机制

下面在<代码> $ 中添加一个元素,并将现有的一个元素的值赋给新的元素:

& lt; PHP ?   时间=美元才能a 数组(& # 39;意义# 39;,=祝辞,& # 39;生活# 39;,,& # 39;数字# 39;,=祝辞,42);   美元才能(& # 39;名字# 39;],=,一美元(& # 39;意义# 39;);   ?在

那么<代码> $> 答:,(refcount=1, is_ref=0)=array  (   & # 39;意义# 39;,=祝辞,(refcount=2,, is_ref=0)=& # 39;生活# 39;   & # 39;数字# 39;,=祝辞,(refcount=1, is_ref=0)=42岁   & # 39;名字# 39;,=祝辞,(refcount=2,, is_ref=0)=& # 39;生活# 39;   )

如果将数组的引用赋值给数组中的一个元素,有意思的事情就会发生:

& lt; php ?   时间=美元才能a 数组(& # 39;一个# 39;);   一个美元才能[],=,,一美元;   祝辞;

这样,,,,,,,一个,,,,,数,,,,,组,,,,,就,,,,,有,,,,,两,,,,,个,,,,,元,,,,,素,,,,,,,,,,一,,,,,个,,,,,索,,,,,引,,,,,为,,,,,0,,,,,,,,,,值,,,,,为,,,,,字,,,,,符,,,,,啊,,,,,n,,,,,e,,,,,,,,,,另,,,,,外,,,,,一,,,,,个,,,,,索,,,,,引,,,,,为,,,,,1,,,,,,,,,,为,,,,,,null   null   null   null   null   null   null   null

怎么在PHP中实现一个垃圾回收机制