ホームページ  >  記事  >  バックエンド開発  >  PHP ガベージ コレクション メカニズムのリファレンス カウンタの概念分析_PHP チュートリアル

PHP ガベージ コレクション メカニズムのリファレンス カウンタの概念分析_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:03:04778ブラウズ

xdebug がインストールされている場合は、xdebug_debug_zval() を使用して「zval」情報を表示できます。以下の通り:

コードをコピーします コードは次のとおりです:

$str = "jb51.net";
xdebug_debug_zval('str');

結果:

str:
(refcount=1, is_ref=0),
文字列 'jb51.net' (length=10)

「refcount」が 0 になるときに変数コンテナが破棄される場合のみ。変数を unset() すると、目的の「zval」の refcount が 1 減ります。数日前に発生した参照の設定解除について話しましょう 質問:

コードをコピーします コードは次のとおりです:

$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)
参照カウンタの問題の話を続けますが、型に準拠する配列とオブジェクトの状況は異なります:

コードをコピー コードは次のとおりです:

$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) ,文字列 'aaa' (長さ=3)
'b' => (refcount=1, is_ref=0),文字列 'bbb' (長さ=3)
'aaa' => (refcount=2, is_ref= 0)、文字列 'aaa' (長さ=3)

元の配列要素と新しく追加された配列要素が、「refcount」2 の同じ zval 変数コンテナーに関連付けられていることがわかります。私は他の人にインスピレーションを与えるためにここにいます。

PHP リファレンス カウンタの詳細については、マニュアルを参照してください: http://php.net/manual/zh/features.gc.refcounting-basics.php

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327870.html技術記事 xdebug がインストールされている場合は、xdebug_debug_zval() を使用して「zval」情報を表示できます。コードをコピーします。 コードは次のとおりです。 ?php $str = "jb51.net" xdebug_debug_zval('str');
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。