2012-01-11 6 views
0

私は私のトレース・ファイルに次の行を持っている:理解Xdebugのメモリデルタ増加

0.5927 12212144 2780040.00 -> require_once(E:\web\lib\nusoap\nusoap.php) E:\web\some_path\file.php:28 

私はこのファイルを必要とするメモリの2.7メガバイトの費用がかかりますことを知っています。単純にファイルを必要とするだけの費用がかかるのは普通ですか?ファイルを必要とするときのメモリコストにはどのような影響がありますか?

私は、必要とされる13行もあり、それぞれ少なくとも350 000KBのメモリが必要です。私はそれぞれ1メガバイトのコストが必要な2行があります。繰り返しますが、このようなことは普通ですか?

編集#1:

私は、メモリリークのため、このに目を向け始めました。私たちにはメモリ使用量が急増するスクリプトがありますが、それがダウンするとRAMの容量は10MB +(ish)増加します。 1点で

、Apacheが使用する450 000メガバイトに達したときに、私たちはこのようなメモリエラーのうちの取得を開始:

再び
PHP Fatal error: Out of memory (allocated x) (tried to allocate y bytes) in/path_to/file.php(1758) on line z 
+0

その下の答えを選択してください、あなたの質問に答えます。私はyoucがXDebugを書いたDerickのようにより良い答えを得ることができないと言いたい。 – hakre

答えて

1

はい。これはかなり正常です。 nusoapライブラリはかなり大きいですが、PHPの内部では、壊れたバイナリ表現として格納されています。あなたは、それ自体がスペースを取っているのではなく、インクルードされているファイルであることを認識する必要があります。

最後に ".00"がどこから来るのかよくわかりません。私はコードをチェックしただけで、浮動小数点数は作成されません。

歓声、 Derick

+0

トレースファイルをExcelにインポートして行を除外し、.00を追加しました。 – TekiusFanatikus

0

、事の通常この種のでしょうか?

はい、これは正常です。デルタを理解したい場合は、xdebugのソースコードを調べてください。これはかなりうまく説明しています。また、xdebugのドキュメントを最初に読んで、IIRCのウェブサイトでは、これらの数字を実際に使ってはいけないことを伝えています(あなたのやり方のように見えます)。

また、xdebugは本番用ではないことに注意してください。生産メモリの使用が必要な場合は、他のツールが必要です。

+0

メモリリークを見つけようとしています。私はこのアプローチを使用することが進歩の道具であると考えました。 – TekiusFanatikus

+0

Xdebugを使用してメモリ関連の問題を追跡することはできますが、デルタについては気にしません。メモリ関連の問題がどこにあるのかを知るために使用するかもしれませんが、xdebugはPHP自身が提供するものに依存しています。たとえば、PHPはインクルードにいくつかのスペースを予約します。コストがかかるので、ほとんどの場合、プログラムは一度に多くを予約し、時間の経過とともにバッファを消費します)。どのような種類のメモリリークについて話していますか? – hakre

+0

私の質問の編集を参照してください。ありがとう! – TekiusFanatikus