php垃圾回收机制实例介绍-php教程

资源魔 10 0
<?php
$a = "new string";
?>

正在上例中,新的变量a,是正在以后作用域中天生的。而且天生了类型为 string 以及值为new string的变量容器。正在额定的两个字节信息中,"is_ref"被默许设置为 FALSE,由于不任何自界说的援用天生。

"refcount" 被设定为 1,由于这里只有一个变量应用这个变量容器. 留意到当"refcount"的值是1时,"is_ref"的值老是FALSE. 假如你曾经装置了» Xdebug,你能经过挪用函数 xdebug_debug_zval()显示"refcount"以及"is_ref"的值。

Example #2 显示zval信息

<?php
xdebug_debug_zval('a');
?>

以上例程会输入:

a: (refcount=1, is_ref=0)='new string'

把一个变量赋值给另外一变量将添加援用次数(refcount).

Example #3 添加一个zval的援用计数

<?php
$a = "new string";
$b = $a;
xdebug_debug_zval( 'a' );
?>

以上例程会输入:

a: (refcount=2, is_ref=0)='new string'

这时候,援用次数是2,由于同一个变量容器被变量 a 以及变量 b联系关系.当没须要时,php没有会去复制已天生的变量容器。

变量容器正在”refcount“变为0时就被销毁. 当任何干联到某个变量容器的变量分开它的作用域(比方:函数执行完结),或许对变量挪用了函数 unset()时,”refcount“就会减1,上面的例子就能阐明:

Example #4 缩小援用计数

<?php
$a = "new string";
$c = $b = $a;
xdebug_debug_zval( 'a' );
unset( $b, $c );
xdebug_debug_zval( 'a' );
?>

以上例程会输入:

a: (refcount=3, is_ref=0)='new string'
a: (refcount=1, is_ref=0)='new string'

假如咱们如今执行 unset($a);,蕴含类型以及值的这个变量容器就会从内存中删除了。

相干保举:

PHP视频教程:https://www.php.cn/course/list/29/type/2.html

以上就是php渣滓收受接管机制实例引见的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!