2012-03-14 20 views
0

私はPHPプログラム(Magento、重要な場合)でメモリリークを追跡しようとしています。基本的な問題は、時間が経つにつれて成長するオブジェクト/クラスのリークのようです。つまり、より多くの情報がデータベースに記録されるほど、特定のアプリケーションプロセスが使用するメモリが増えます。 Magentoは非常に抽象的なシステムなので、どのようなコードが実行されているのかはそれほど多くのメモリを消費していることは必ずしも明らかではありません。それが私が追跡しようとしているものです。memory_get_peak_usageキャッシュのクリア

私はプログラムのブートストラップファイルの最後にパフォーマンスをベンチマークするためにmemory_get_peak_usageを使用していましたが、250MBのピーク使用から約1週間で310MBのピーク使用まで着実に増加しています。実行サイクル全体でmemory_get_peak_usageを断続的に使用して質問します

この呼び出しに先立つピーク時の使用率はどのくらいでしたか? [後のサイクルで]この新しいコールの前にピーク時の使用状況は何でしたか?

私は一度memory_get_peak_usageを呼び出したら、私はあるに実行している問題は、将来の呼び出しは、私はピーク時の使用が変更された知っている場合でも、最初の呼び出しと同じ値を返します。これは、memory_get_peak_usageが一度呼び出された後、PHPがその結果をキャッシュしていると私につながります。私は上記のテストを実行するためにキャッシュを解除したいと思います。

  1. memory_get_peak_usageに複数回コールすることはできますか?

  2. 上記のシナリオのプロファイリングに代わる方法がありますか?多分xDebugのいくつかの機能?

+0

また、[xhprof](http://www.google.com/search?q=xhprof)をよくご覧ください。これは、リソースの使用状況をよりよく理解できる場合があります。 – Charles

答えて

1

私は複数回memory_get_peak_usageを呼び出すことができますか?

これはわかりません。

上記のシナリオのプロファイリングに代わる方法がありますか?多分xDebugのいくつかの機能?

XDebug profile pageをご覧ください。私はアプリをプロファイリングしてからしばらくしていましたが、私がそうしたときに私は執筆に続き、素晴らしい仕事をしました。

+0

私はあなたがアプリケーションをプロファイルすることができたと思う、なぜあなたはメモリリークを見つけるのですか? –