ホームページ  >  記事  >  バックエンド開発  >  PHPガベージコレクションメカニズムの例の紹介

PHPガベージコレクションメカニズムの例の紹介

尚
転載
2020-03-23 09:16:233363ブラウズ

PHPガベージコレクションメカニズムの例の紹介

<?php
$a = "new string";
?>

上の例では、新しい変数 a が現在のスコープで生成されます。そして、型が文字列、値が新しい文字列の変数コンテナが生成されます。追加の 2 バイトの情報では、カスタム参照が生成されないため、「is_ref」はデフォルトで FALSE に設定されます。

この変数コンテナを使用する変数が 1 つだけであるため、「refcount」は 1 に設定されます。「refcount」の値が 1 の場合、「is_ref」の値は常に FALSE になることに注意してください。 » Xdebugでは、関数xdebug_debug_zval()を呼び出すことで「refcount」と「is_ref」の値を表示できます。

例 #2 zval 情報の表示

<?php
xdebug_debug_zval(&#39;a&#39;);
?>

上記のルーチンは次のように出力します:

a: (refcount=1, is_ref=0)=&#39;new string&#39;

ある変数を別の変数に代入すると、参照数 (refcount) が増加します。

例 #3 zval の参照数を増やす

<?php
$a = "new string";
$b = $a;
xdebug_debug_zval( &#39;a&#39; );
?>

上記のルーチンは次のように出力します:

a: (refcount=2, is_ref=0)=&#39;new string&#39;

この時点では、同じ変数コンテナーであるため、参照の数は 2 です。は、変数 a と変数 b の関連付けによって使用されます。PHP は、生成された変数コンテナーが必要でない場合にはコピーしません。

変数コンテナは、「refcount」が 0 になると破棄されます。変数コンテナに関連付けられた変数がそのスコープを離れるとき (例: 関数の実行が終了するとき)、または関数 unset が変数 () に対して呼び出されるとき, "refcount" は 1 つ減ります。次の例で説明します。

例 #4 参照カウントを減らす

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

上記のルーチンは出力します:

a: (refcount=3, is_ref=0)='new string'
a: (refcount=1, is_ref=0)=&#39;new string&#39;

If unset($a) を実行すると、型と値を含む変数コンテナがメモリから削除されます。

関連する推奨事項:

PHP ビデオ チュートリアル: https://www.php.cn/course/list/29/type/2.html

以上がPHPガベージコレクションメカニズムの例の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はoschina.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。