PHP垃圾回笼机制援用流速计概念深入分析

只要您安装了xdebug,就可以用xdebug_debug_zval(卡塔尔国展现“zval”的音讯了。如下:

复制代码 代码如下:
澳门新蒲京官网,$str = “jb51.net”;
xdebug_debug_zval(‘str’);

结果:

str:
(refcount=1, is_ref=0),
string ‘jb51.net’ (length=10)

惟有当变量容器在”refcount“产生0时就被销毁.当您unset(卡塔尔(قطر‎三个变量时,想要的“zval”中refcount就能减1,再来讲说今日遇到的unset引用难题:

复制代码 代码如下:
$a = “aaa”;
$b = & $a;
unset($a);
//echo $b;
//这里照旧会输出aaa,用xdebug_debug_zval打字与印刷你就清楚干什么了
xdebug_debug_zval(“b”);

结果:

b:
(refcount=1, is_ref=0),string ‘aaa’ (length=3)
继续说援引流速计难点,对于array和object相符项目景况又不相符了:

复制代码 代码如下:
$arr = array( ‘a’ => ‘aaa’, ‘b’ => “bbb” );
xdebug_debug_zval( ‘arr’ );
$arr[‘aaa’] = $arr[‘a’];
xdebug_debug_zval( ‘arr’ );
?>

结果:

arr:
(refcount=1, is_ref=0),
array
  ‘a’ => (refcount=1, is_ref=0),string ‘aaa’ (length=3)
  ‘b’ => (refcount=1, is_ref=0),string ‘bbb’ (length=3)
arr:
(refcount=1, is_ref=0),
array
  ‘a’ => (refcount=2, is_ref=0),string ‘aaa’ (length=3)
  ‘b’ => (refcount=1, is_ref=0),string ‘bbb’ (length=3)
  ‘aaa’ => (refcount=2, is_ref=0),string ‘aaa’ (length=3)

能够见到看见原有的数组成分和新添长的数组成分关联到同叁个”refcount”2的zval变量容器.这里笔者也只是起到投石问路的法力。

切切实实有关PHP援引流量计能够参照手册:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website