Dive into the archives.
- PHP のメモリ使用量について
新年早々、マニアックなネタです。実家にいるので食べて、プログラムのデバッグ、ゲームみたいな 2009 年の始まりです。。。
今、開発してる PHP 向けの AOP 環境の実装 (AOWP)で、織り込み処理の時のメモリ使用量が問題になってます。。。WordPressを対象に処理を行うとすぐにメモリが 512MB 以上に。。。ここ 3週間程、メモリ使用量のチューニングをずっと頑張ってます。。。
で、ようやく解決の糸口が。。。:)
ポイントは、リファレンス渡しとリファレンス返しのところ (PHPのマニュアル)
循環参照を含むインスタンスの変数の解放の 2つでした。
循環参照のメモリ解放は、早い段階で気づいて、明示的にインスタンスが含むクラス変数のインスタンスを解放するようにして解決。結構、メモリ使用量が減ったんで、楽観視してましたが、、、
オブジェクトを引数として渡す場合と、オブジェクトをメソッドの返り値として返すときに、リファレンス渡し及びリファレンス返しにしてなかった為に、解放されない変数がたくさんありました。。。織り込みに使用する循環参照を含むインスタンスを、複数のメソッドを通して操作する際に変数のコピーが作成されて、変数の解放がうまくいってなかったみたい。。。
大方、メモリ使用量のチューニングのめどが立って良かったです。。。

