メモリリークの確認方法

Flash Player/Adobe AIRのメモリリークの調査には二種類の方法があります。

それぞれ解析するのに長けた部分が異なっているため、両方を使って解析するのがオススメです。「Adobe Flash Builder 4.7 プロファイラ」でメモリリークを解析し、「Adobe Scout CC」で処理負荷を解析するという使い方がよいでしょう。以下で具体的なそれぞれの操作方法を紹介します。

Adobe Flash Builder 4.7 プロファイラでのメモリリーク存在有無の確認手順

Flash Builderのプロファイラでは生成したインスタンスの残っている数を把握できます。メモリの使用量は基本的にインスタンスの残っている数と比例するので、インスタンスの残っている数を減らすことはメモリリーク対策に直結します。

  1. Flash Buidlerを起動し、対象のプロジェクトを開いた状態にする
  2. メニューバーから[ウインドウ]→[プロファイル]を実行
  3. [接続が確立しました]ウインドウにて、次の項目をチェックする。(それ以外の項目は任意)
    • [メモリのプロファイリングを有効にする]
    • [ライブメモリデータを監視]
  4. [再開]ボタンをクリック
  5. Flashコンテンツ/AIRアプリを再生する(チェックしたい画面の行き来を繰り返す)
  6. [ライブオブジェクト]パネル内の[パッケージ]列を選択
    ※該当するクラスを発見しやすくするため
  7. 該当するクラスの[累計インスタンス]列の数値と[インスタンス]列の数値を比較
  8. [インスタンス]列の数値が蓄積されていないかどうかを確認し、画面遷移を繰り返すなどで蓄積されているようならメモリリークと認識する
  9. ActionScriptコードのdispose処理が実行されているか等を確認し、されていないようなら修正する
  10. 2〜9の手順を繰り返しメモリリークの対策を行う

参考記事

※上図のように0が縦一列にならぶ状態を作り出せるとメモリリーク対策は成功といえるでしょう。地味な作業ですが、Flash Builderのプロファイラで残っているインスタンスの数を減らしていくのがメモリリーク対策に効果的です。

Adobe Scoutでのメモリリーク存在有無の確認

Adobe Scoutはメモリリーク対策よりも処理負荷調査に使えるのですが、実はFlashのGPUメモリの使用量をチェックできる数少ないツールだったりもします。Stage3Dを利用したコンテンツを開発している場合は、Scoutを用いてGPUメモリのリークが発生していないか検証するとよいでしょう。今回はScoutをGPUメモリの対策ツールとしての側面を紹介します。

  1.  Flash Buidlerを起動し、対象のプロジェクトを開いた状態にする
  2.  プロジェクトの[プロパティ]を開き[ActionScriptコンパイラー]を選択
  3. [詳細な Telemetry を有効にする]オプションをチェックし、[OK]ボタンをクリック
  4. Adobe Scoutを起動
  5. Scoutの左側の[メモリ割り当てのトラッキング]を選択する (それ以外は任意)
  6. Scoutの[フレームタイムライン]パネルにて[メモリ]を選択
  7. Flash Builderでプロジェクトを実行し、Flashコンテンツ/AIRアプリを再生する
  8. 画面遷移を繰り返すと、[メモリ]のグラフが増減するが、増加する場合はメモリリークと認識する
  9. ActionScriptコードのdispose処理が実行されているか等を確認し、されていないようなら修正する
  10. 2〜9の手順を繰り返しメモリリークの対策を行う

参考記事

▲ScoutでGPUメモリのグラフが意図したタイミングで下がれば効果があったといえます。GPUメモリの前後グラフを比較してメモリリークしていないか調査するとよいでしょう。

次のページでは、メモリリーク対策としての勘所を紹介します。