Flash Builder 4 のプロファイラの話の続きです。
本題に入る前に、前回書き忘れた点をいくつか。
- プロファイリングからできるだけ正確な情報を得たい場合、デバッグ用の SWF やデバッグプレーヤーは使わないようにします。余計なものまで計ってしまいますので。
- 一方、だいたいの傾向が分かれば良い場合 (ラフチューニング中とか) は、デバッグプレーヤでも十分。
- あと、FB、Flash Player 共にできるだけ最新のバージョンを使うことをお勧めします。
- 最後に、Flex Builder 3 には Standard 版と Professional 版がありますが、プロファイラの機能が付いているのは Professional 版のみです。
では、続きに戻って、
下はメモリ使用量を示すウインドウです。ウインドウ内にはピークメモリと現在のメモリ使用量が表示されます。
グラフは秒単位で更新され、最新の 100 秒分が表示されます。残念ながら、ウインドウを大きくしても表示される期間は 100 秒から変わりません。
「ピークメモリ」 は見てのとおり、測定開始からのメモリ使用量の最大値です。 「現在のメモリ」 として表示される値は、実行されている SWF 内に存在するインスタンスが占めているメモリ量です。
他のメモリ測定方法との関係
ところで、Flash Player はインスタンス毎ではなく 4KB のブロック単位でメモリを獲得します。また、個々のブロックが隙間無く使われている訳では (たいていは) ないでしょう。とすると Flash Player が SWF の実行のために割り当てたメモリ量は、上のグラフで示される値 (実際にインスタンスが占めているメモリ量) より多いと考えてよさそうです。
Flash Player が割り当てたメモリ量の方を知りたい場合には System.totalMemory の値を参照します。こっちのほうが外から見た Flash Player の動きには近いはずです。
OS レベルのリソースモニターツール (タスクマネージャーとか) からは、プログラムのメモリ使用量はさらに余分に見えます。これは System.totalMemory の値に加えて、Flash Player の実行やブラウザ自身が必要とするメモリ量も含まれているためです。
また、OS ツールから見えるメモリ使用量の増減はブラウザの動きを表すものです。ブラウザ内で実行される Flash Player 内で実行されるプログラムの振る舞いを正確に把握する材料としては、やや心許ないかもしれません。
なので、メモリ使用量の傾向を調べる際は、せめて System.totalMemory を、できればプロファイラの表示する値を参考にすることをお勧めします。
というあたりで続きはまた次に。
コメントする