これは、複雑な方法で大量のデータを処理するPHP 5.3 Cliアプリケーションに関係し、時間がかかります。誰かがガーベジコレクションを無効にすると、それがかなり高速に実行されることを発見しました(たぶん50%程度)。なぜPHPのガーベジコレクタがパフォーマンスを低下させ、メモリなしでメモリを管理するのですか?
このパフォーマンスヒットについては、http://derickrethans.nl/collecting-garbage-performance-considerations.htmlです。私は完全にそれに従っているかどうかはわかりませんが、循環参照が多いコードにのみ適用されることを示唆しています。
誰かがこれでいくつかの光を当てることができますか?
また、gcをオフにしているので、手動でメモリを減らす方法はありますか? unset()を使うことが提案されています。クイックテストでは、オブジェクトのサイズに関係なく、unset()によって80バイト程度が解放されることが示されています。これは、単に私がオンラインで読んだことによって裏づけられた参照を解除することを示唆しています。変数がスコープから外れると、ガベージコレクションがなくても、これらの80バイトが解放されると思うのですか?
私は、それがケースかもしれないと思ったが、マニュアルは非常に不明瞭です。だから、正規のものは無効にすることは不可能ですか? (興味がありません) – naomi
@naomiはい、無効にすることはできません。あなたはPHPの中からメモリを解放することはできません( 'unset()'はこれをしません)。大きな問題があります:D – KingCrunch