PHPのガベージコレクション

WBOY
リリース: 2016-06-20 12:41:18
オリジナル
1019 人が閲覧しました

例 #1 新しい zval コンテナーを生成する

$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 情報を表示する

xdebug_debug_zval('a'); >

上記のルーチンは次の出力を行います:

a: (refcount=1, is_ref=0)='new string'
ログイン後にコピー

変数を別の変数に代入すると、参照番号が追加されます。

例 3 zval の参照カウントを増やす

$a = "新しい文字列";
$b = $a;
xdebug_debug_zval( 'a' );

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

a: (refcount=2, is_ref=0)='new string'
ログイン後にコピー
このとき、変数 a と変数 b には同じ変数コンテナが関連付けられているため、参照数は 2 になります。 PHP は生成された変数コンテナをコピーしません。変数コンテナは、「refcount」が 0 になると破棄されます。変数コンテナに関連付けられた変数がそのスコープを離れるとき (例: 関数の実行が終了するとき)、または関数 unset() が変数に対して呼び出されるとき、「refcount」 は破棄されます。次の例に示すように、1 ずつ減らされます。

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

$a = "新しい文字列";

$c = $b = $a;

unset( $b, $c ); );

?>


上記のルーチンは次のように出力します。 unset($a); を実行すると、型と値を含む変数コンテナがメモリから削除されます。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート