ホームページ > バックエンド開発 > PHPチュートリアル > PHP 参照カウントと Copy-on-Write_PHP チュートリアルについて

PHP 参照カウントと Copy-on-Write_PHP チュートリアルについて

WBOY
リリース: 2016-07-13 10:33:39
オリジナル
944 人が閲覧しました

php は、参照カウントとコピーオンライトを使用してメモリを管理します。参照評価により、参照が不要になったときにメモリがオペレーティング システムに返されることが保証され、コピーオンライトにより、変数間で値がコピーされるときにメモリが無駄にならないことが保証されます。

PHP のメモリ管理を理解するには、まずシンボル テーブルの概念を理解する必要があります。変数には、変数名 ($name など) と変数値 (「Fred」など) の 2 つの部分があります。シンボル テーブルは、変数名をその値のメモリ位置にマップする配列です。

ある変数から別の変数に値をコピーするとき、PHP は値をコピーしてメモリを追加するのではなく、シンボル テーブルを更新して「これら 2 つの変数は同じメモリの名前である」ことを示します。したがって、以下のコードは実際には新しい配列を作成しません:

リーリー

コピーを変更すると、PHP はメモリを割り当ててコピーを生成します。 リーリー

遅延割り当てとコピーにより、PHP は多くの場合、時間とメモリを節約します。これはコピーオンライトです。

シンボル テーブルが指す各値には参照カウントがあり、これはメモリのその部分につながるパスの数を表す数値です。配列の初期値を $people に割り当て、$people を $programmer に割り当てた後、配列を指すシンボル テーブル内のエントリは $people と $programmer になり、参照カウントは 2 になります。言い換えれば、そのメモリにアクセスするには、$people または $programmer を使用する 2 つの方法があります。ただし、$people[1] が変更されると、PHP は $people の新しい配列を作成し、各配列の参照カウントは 1 のみになります。

変数がスコープ外の場合(関数パラメーターまたはローカル変数が関数の最後にある場合)、参照カウントは 1 ずつ減らされます。変数にメモリの別の領域の値が割り当てられると、古い参照カウントは 1 つ減ります。参照カウントが 0 になると、メモリが解放されます。これが参照カウントです。

参照カウントを使用してメモリを管理する好ましい方法は、関数に必要な値を渡すために変数の関数局所性を維持し、参照が不要になったときにメモリを解放する責任を参照カウントに持たせます。さらに情報を取得したい場合、または解放された変数の値を完全に制御したい場合は、関数 isset() および unset() を使用できます。

変数が(空の文字列であっても)設定されているかどうかを確認するには、 isset() を使用します。 リーリー

unset() を使用して変数の値を削除します。

リーリー

詳細資料: http://php.net/manual/zh/features.gc.refcounting-basics.php

http://www.bkjia.com/PHPjc/752448.html

本当http://www.bkjia.com/PHPjc/752448.html技術記事 PHP は、参照カウントとコピーオンライトを使用してメモリを管理します。参照の計算により、参照が不要になったときにメモリがオペレーティング システムに返されることが保証され、コピーオンライトにより参照が変数間でコピーされることが保証されます...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート