#この記事の動作環境: Windows 10 システム、PHP8.1.3 バージョン、Dell G3 コンピューター。 PHP は、開発者が使用されなくなったメモリを自動的に解放するのに役立つ、自動ガベージ コレクション メカニズムを備えたスクリプト言語です。 PHP のガベージ コレクションの主な種類は次のとおりです: 1. 参照カウント ガベージ コレクション: PHP で採用された最も初期のガベージ コレクション メカニズムは参照カウントです。変数が参照されると参照カウントは 1 増加し、変数が参照されなくなると参照カウントは 1 減少します。参照カウントが 0 に達すると、変数が使用されなくなったことを意味し、メモリを解放できます。この方法はシンプルで効率的ですが、循環参照の問題があります。つまり、2 つ以上のオブジェクトが相互に参照するため、参照カウントが 0 にならず、メモリを解放できなくなります。 2. マーク アンド スイープ ガベージ コレクション: 循環参照の問題を解決するために、PHP ではマーク アンド スイープ ガベージ コレクション メカニズムを導入しています。このメカニズムは、到達可能なすべてのオブジェクトを走査し、参照されたオブジェクトをマークし、マークされていないオブジェクトをクリアすることによって、使用されなくなったメモリを確実に解放しますが、オブジェクト グラフ全体を走査する必要があり、大きなオブジェクト グラフの処理効率は低くなります。 3. 世代別ガベージ コレクション: ガベージ コレクションの効率を向上させるために、PHP には世代別コレクション メカニズムが組み込まれています。このメカニズムはオブジェクトを異なる世代に分割し、各世代には独自のガベージ コレクション戦略があります。一般に、新しく作成されたオブジェクトは第 1 世代に入れられ、第 1 世代がいっぱいになると、使用されなくなったオブジェクトをリサイクルするためにガベージ コレクションがトリガーされます。オブジェクトが複数のガベージ コレクションを経て生き残った場合、そのオブジェクトは最も古い世代に達するまで世代を超えて昇格されます。ゴミ収集の頻度を減らし、リサイクル効率を向上させることができます。 4. メモリ プールのガベージ コレクション: メモリ フラグメントの生成を回避するために、PHP はメモリ プールのガベージ コレクション メカニズムを導入しています。このメカニズムはメモリを固定サイズのブロックに分割し、各ブロックには使用中かどうかを示すフラグが付けられます。オブジェクトが作成されると、メモリ プールからブロックが割り当てられ、オブジェクトが使用されなくなると、ブロックは空きとしてマークされます。これにより、メモリの断片化の発生が減り、メモリの使用率が向上します。php ガベージ コレクション プロジェクトには次のものが含まれます: 1. 変数への参照をカウントする参照カウント、カウントが 0 になると変数が解放されます; 2. マークのクリア、到達可能なすべてのオブジェクトをトラバースすることによって、マークはオブジェクトを参照し、マークされていないオブジェクトをクリアして、使用されなくなったメモリを確実に解放します。 3. 世代別リサイクル、オブジェクトを異なる世代に分割します。各世代には独自のガベージ コレクション戦略があり、最初の世代がいっぱいになった場合、ゴミが発生する リサイクル; 4. メモリ プール。メモリを固定サイズのブロックに分割します。各ブロックには、使用されているかどうかを示すマークが付いています。オブジェクトが使用されなくなった場合は、空きとしてマークされます。
概要
PHP のガベージ コレクション プロジェクトには、主に参照カウント、マーク削除、世代別リサイクル、メモリ プールが含まれます。各ガベージ コレクション メカニズムには長所と短所があり、開発者は特定のニーズに基づいて適切なガベージ コレクション メカニズムを選択できます。以上がPHP ガベージ コレクション プロジェクトとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。