PHP GC(garbage ccontroller)ごみ回収メカニズム(1)

1062 ワード

Phpに変数がないとオブジェクトがゴミになり、phpはメモリから破棄され、メモリオーバーフローを防止します.Phpは単純な「参照カウント」を採用し、すなわちメモリオブジェクトごとにカウンタを割り当て、変数に参照されるとrefcount+1、変数が取り外されるとrefcount-1、カウンタ=0のときはメモリオブジェクトが使用されていないことを示し、そのメモリオブジェクトは破棄され、ゴミ回収が完了する.各php変数には「zval」という変数コンテナがあります.-Name-Type-Is_refの4つのフィールドがあります.この変数が参照セット-refCountに属しているかどうかを識別します.このzval変数コンテナを指す変数(シンボルであるsymbolとも呼ばれます)の個数を表します.
ガイドライン:
  • zvalのrefcountが増加すると、このzvalはまだ使用され、ゴミ
  • には属しません.
  • zvalのrefcountが0に減少すると、zvalはゴミ
  • に属さずに放出される.
  • zvalのrefcountが減少した後に0より大きい場合、このzvalはまだ解放されず、このzvalはゴミとなり、キャッシュ領域
  • に格納される可能性がある.
  • キャッシュ領域が臨界値に達すると、ループ削除はゴミの値
  • となる.
    __destruct()解析関数は、ゴミオブジェクトが回収されたときに実行されます.unsetが破棄するのは、このオブジェクトではなく、オブジェクトを指す変数です.
    debug_zval_dump($bianliang)/変数のrefcountを表示
    Sessionとゴミ回収メカニズム
    session.gc_maxlifetime session.gc_probability session.gc_divisor session.gc_divisorとsession.gc_probabilityは、セッションの初期化ごとにgc(garbage collectionゴミ回収)プロセスを開始する確率を定義します.この確率はgc_でprobability/gc_divisorは計算できる.例えば1/100は、各リクエストにおいて1%の確率でgcプロセスを開始することを意味する.session.gc_divisorのデフォルトは100です. zend gc