ホームページ >バックエンド開発 >PHPチュートリアル >PHP ガベージ コレクションのメカニズムを理解する_PHP チュートリアル

PHP ガベージ コレクションのメカニズムを理解する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:12:18788ブラウズ

PHP ガベージ コレクション メカニズムは php5 以降にのみ存在しました。PHP ガベージ コレクション メカニズムについて少し紹介します。これがすべての学生の役に立つことを願っています。

PHP 5.3 より前に使用されていたガベージ コレクション メカニズムは単純な「参照カウント」でした。つまり、メモリ オブジェクトが変数によって参照される場合、その変数の参照が削除されると、そのカウンターは 1 になります。カウンタが -1 の場合、カウンタ = 0 は、メモリ オブジェクトが使用されていないこと、メモリ オブジェクトが破棄され、ガベージ コレクションが完了したことを示します。

「参照カウント」の問題は、2 つ以上のオブジェクトが相互に参照してリングを形成する場合、その時点でメモリ オブジェクトのカウンタが 0 に減らず、このメモリ オブジェクトのグループが存在しなくなることです。便利ですが、リサイクルできないため、メモリ リークが発生します。

php5.3 以降、参照カウントに基づいて、メモリ オブジェクト内の参照リングの存在を検出するための複雑なアルゴリズムが使用されています。メモリリークを避けるため。

このアルゴリズムについては、この短い概要の主な参考資料である次の記事を参照してください:): PHP5 のガベージ コレクション アルゴリズム (ガベージ コレクション) の進化に関する簡単な説明


以下の例を見てください。

例1: gc .php

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

error_reporting(E_ALL);
$a = '私はテストです。'; = & $a;

echo $ b ."n";

?>

言うまでもなく、% php -f gc.php 出力結果は非常に明確です:

hy0kl% php -f gc.php
test.

それでは、次:

例 2:

コードは次のとおりです コードをコピーします
error_reporting(E_ALL); =「私はテストします。';
$b = & $a;

$b = '変更しますか?';

hy0kl% php -f gc.php

$a = '変更しますか?'; $b = & $a;

unset($a);

echo $a ."n";
?>
それについて考えなければなりませんか?
hy0kl% php -f gc.php
注意: 未定義の変数: /usr/local/www/apache22/data/test/gc.php の 8 行目

私は test.
少し混乱していますか?


例 4:
コードは次のとおりです

コードをコピーします

& & & & & & & &Error_reporting (E_ALL);テスト。';
$b = & $a;

unset($b); echo $b ."n";

?>




実際、例 3 を理解していれば、これはそれに似ています。
hy0kl% php -f gc.php
私は test です。
注意: 未定義の変数: b in /usr/local/www/apache22/data/test /gc.php の 9 行目

見てください:
例 5:

?>

最初の激しさは何ですか?
コードは次のとおりです コードをコピー

error_reporting(E_ALL);テスト。';
$b = & $a;

$a = null;

echo '$a = '。

echo

'$b = '。 ."n" ;
hy0kl% php -f gc.php

$a =
$b =
はい、これが出力結果です。正直、このコードを初めて実行したときは驚きましたが、これにより PHP GC についての理解が深まりました。同じ作業の次の例は当然簡単です。 6例 6:


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

& & & lt;? Php

Error_reporting (e_all);

$ b = & $ a; $b = null;echo '$a = '. $a ."n"; 技術記事
echo '$b = '. $b ."n"; PHP チュートリアルの記事、Baidu にアクセスして PHP ガベージ コレクション メカニズムの記事を学ぶこともできます。ここでは 1 つずつ紹介しません。




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

www.bkjia.com


tru​​e

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

PHP のガベージ コレクション メカニズムは、php5 以降にのみ存在しました。PHP のガベージ コレクション メカニズムについて少しご紹介します。これがすべての学生に役立つことを願っています。 php 5.3 より前...


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。