本篇文章带大家深入了解一下PHP中的垃圾回收机制,希望对大家有所帮助!一、引用计数基础知识每个php变量存在一个叫 zval 的变量容器中。一个 zval 变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。第一个是 is_ref,
本篇文章带大家深入了解一下PHP中的垃圾回收机制,希望对大家有所帮助!
<?php
$a = "new string";
xdebug_debug_zval('a');
//结果
a: (refcount=1, is_ref=0)='new string'
<?php
$a = "new string";
$b = $a;
xdebug_debug_zval( 'a' );
//结果
a: (refcount=2, is_ref=0)='new string'
<?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'
<?php
$a = array( 'meaning' => 'life', 'number' => 42 );
xdebug_debug_zval( 'a' );
//结果
a: (refcount=1, is_ref=0)=array (
'meaning' => (refcount=1, is_ref=0)='life',
'number' => (refcount=1, is_ref=0)=42
)
<?php
$a = array( 'meaning' => 'life', 'number' => 42 );
$a['life'] = $a['meaning'];
xdebug_debug_zval( 'a' );
//结果
a: (refcount=1, is_ref=0)=array (
'meaning' => (refcount=2, is_ref=0)='life',
'number' => (refcount=1, is_ref=0)=42,
'life' => (refcount=2, is_ref=0)='life'
)
<?php
$a = array( 'meaning' => 'life', 'number' => 42 );
$a['life'] = $a['meaning'];
unset( $a['meaning'], $a['number'] );
xdebug_debug_zval( 'a' );
//结果
a: (refcount=1, is_ref=0)=array (
'life' => (refcount=1, is_ref=0)='life'
)
<?php
$a = array( 'one' );
$a[] = &$a;
xdebug_debug_zval( 'a' );
//结果
a: (refcount=2, is_ref=1)=array (
0 => (refcount=1, is_ref=0)='one',
1 => (refcount=2, is_ref=1)=...
)
--结束END--
本文标题: 一文聊聊php中的垃圾回收机制
本文链接: https://lsjlt.com/news/33870.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0