php5 と php7 のガベージ コレクション メカニズムはどちらも参照カウントを使用します。
#参照カウントとは何ですか?
PHP は C で書かれているため、C には構造体と呼ばれるものがあります。PHP 変数はこの方法で C に保存されます。 各 PHP 変数は、zval というコンテナーに存在します。zval コンテナーには、変数名と値に加えて、2 バイトの追加情報も含まれています。1 つは「is_ref」と呼ばれるブール値です。 , この変数が参照コレクションに属しているかどうかを示すために使用されます。このバイトを通じて、PHP で通常の変数と参照変数を区別できます。2 番目の追加バイトは 'refcount' で、このコンテナを指す変数の数を示すために使用されます。 番号。PHP5 での出力:
person: (refcount=1, is_ref=0), array (size=2) 'name' => (refcount=1, is_ref=0),string '看看' (length=6) 'age' => (refcount=1, is_ref=0),int 19
PHP7 での出力:
person: (refcount=2, is_ref=0) array (size=2) 'name' => (refcount=1, is_ref=0)string '看看' (length=6) 'age' => (refcount=0, is_ref=0)int 19複雑なデータ型の場合、 PHP5 と PHP7 の参照カウント アルゴリズムは異なります。 循環参照の状況を試してみましょう: 上記のコードに基づいて、コード行を追加します
$person['hello'] = $person['name']
PHP7 での出力:
person: (refcount=1, is_ref=0) array (size=3) 'name' => (refcount=3, is_ref=0)string '看看' (length=6) 'age' => (refcount=0, is_ref=0)int 19 'hello' => (refcount=3, is_ref=0)string '看看' (length=6)
PHP5 の出力:
person: (refcount=1, is_ref=0), array (size=3) 'name' => (refcount=2, is_ref=0),string '看看' (length=6) 'age' => (refcount=1, is_ref=0),int 19 'hello' => (refcount=2, is_ref=0),string '看看' (length=6)
概要:
PHP5 と PHP7 のガベージ コレクション メカニズムはどちらも参照カウントに属します。複雑なデータ型のアルゴリズム処理に関して: zval は PHP7 に新しい実装を備えています。最も基本的な変更は、*zval で必要なメモリがヒープとは別に割り当てられなくなり、参照カウントが単独で格納されなくなったことです。複雑なデータ型 (文字列、配列、オブジェクトなど) の参照カウントは、それ自体で保存されます。この実装には次の利点があります:
1. 単純なデータ型では、メモリを個別に割り当てる必要がなく、カウントする必要もありません; 2 . 二重カウントはなくなります。オブジェクトでは、オブジェクト自体に保存されているカウントのみが有効です; 3. カウントは値自体によって保存されるため、zval 間など、非 zval 構造内のデータと共有できます。そしてハッシュ可能なキー。 推奨チュートリアル:以上がphp7のガベージコレクションとphp5の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
4週間前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
4週間前By尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
2週間前ByDDD
R.E.P.O.誰も聞こえない場合はオーディオを修正する方法
1 か月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.チャットコマンドとそれらの使用方法
1 か月前By尊渡假赌尊渡假赌尊渡假赌

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Dreamweaver Mac版
ビジュアル Web 開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター
