as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート

メモリのモニタリングと記録

メモリのモニタリングと記録

Vega Studio内のツールであるMemory Monitorを使用すると、グラフィカルインターフェイスを介してアプリのメモリ使用量を可視化できます。これにより、クラッシュ、フリーズ、ジッターなどのパフォーマンスの問題が発生する前に、メモリの問題を特定して解決できます。Memory Monitorを使用すると、アプリのメモリ状態のスナップショットをキャプチャし、Recording Viewで分析できます。Recording Viewではメモリ消費量の多い領域がハイライトされ、非効率な部分に対処することでパフォーマンスを最適化できます。

このページでは、Visual Studio(VS)Codeのコマンドパレットを使用して、Memory Monitorを使用する方法、アプリのメモリの内訳を記録する方法、記録されたデータを分析する方法について説明します。

VS CodeのMemory Monitorを使用したアプリの検査

  1. VS Codeでコマンドパレットを開きます。

    Mac: Shift + Command ⌘ + P

    Linux: Ctrl + Shift + P

    コマンドパレットに「Vega: Start Memory Monitor」と入力
    コマンドパレットでのMemory Monitorの起動
  2. Vega: Start Memory Monitor」と入力し、Macの場合はReturnキー、Linuxの場合はEnterキーを押します。

    [App Performance Tools] セクションからApp KPI Visualizerを起動
    [App Performance Tools] での [Memory Monitor] の選択

    [App Performance Tools] セクションから [Memory Monitor] を選択することもできます。

    画面にMemory Monitor Viewが表示されます。空白の画面が表示された場合は、ウィンドウを閉じてMemory Monitorを再起動してください。

  3. 接続されたデバイスでアプリを起動し、Memory Monitorを開始します。

    新しいウィンドウに進行状況バーが表示され、Memory Monitorチャートのライブレンダリングが開始されます。

    Memory Monitorのライブレンダリングが表示された画面
    Memory Monitorのライブレンダリング

    このビューには、以下のメモリ内訳が表示されます。

    • 比例セットサイズ(PSS)
    • ユニークセットサイズ(USS)
    • JavaScript(JS)ヒープ(Vega向けReact Nativeアプリのみ)

      PSSは全体的なメモリ使用量を示し、USSはプライベートメモリ使用量を示します。時間の経過とともにUSSが増加する場合、メモリリークの発生を示している可能性があります。

CLIを使用したアプリの検査

Vega StudioのアプリパフォーマンスCLIコマンドkepler exec perf memory-monitorを使用します。

kepler exec perf memory-monitor
            --app-name=com.amazondeveloper.keplervideoapp.main
             --keplerscript-app必要な場合
             --relative-gc-count必要な場合

その他のコマンドオプションについては、Vega StudioアプリパフォーマンスCLIを参照してください。

メモリコンポーネント

以下の表に、PSSUSSSystem Available MemoryJS Heapのメモリサブコンポーネントの説明を示します。

メモリコンポーネント メモリサブコンポーネント 説明
PSS   実行中のプロセスが使用するメモリで、プライベートメモリ、および他のプロセスと共有されているメモリ割り当てを合わせたものです。
  Swap PSS 圧縮RAM(ZRAM)にスワップされたページの元のサイズ。圧縮前のPSSで測定されます。
  DRM グラフィック処理装置(GPU)やフレームバッファーを含む、グラフィックおよび表示操作を管理するためにDirect Rendering Manager(DRM)によって割り当てられるメモリ部分。
  Native Heap PSSのネイティブヒープ部分。システムアロケーター(mallocなど)を使用してプロセスに割り当てられたメモリを表します。特に、メモリマップアクセスプロトコル(MMAP_THRESHOLD)よりも小さい割り当てに使用されます。より大きな割り当ては、代わりにMMAPを経由します。
  Native Stack PSSのネイティブスタック部分。
  Anonymous プロセスは、メモリを割り当てる必要がある場合、malloc()などの関数を使用して必要な量のメモリを割り当てます。MMAP_THRESHOLDを超えるメモリ割り当てでは、プロセスはmmap()システムコールを使用してメモリを割り当てます。MMAP割り当てはPSSメモリのこのセクションを占有します。
  ライブラリ 読み込まれた共有ライブラリに由来するPSS部分。
System Available Memory   malloc()または同様のAPIを通じてプロセスから要求があった場合にOSが割り当てることができるメモリの合計です。これには、OSが既存のプロセスまたはアプリから回収できるメモリも含まれます。
  USS アプリによって使用されるプライベートなRAM部分。時間の経過とともにUSSが継続的に増加するのは、多くの場合、メモリリークの発生を示しています。リークを確実に検出するには、追加のモニタリング指標を使用してください。
  Swap USS ZRAMにスワップされた元の非圧縮メモリページのサイズ。圧縮済みのストレージサイズに関係なく、USSとして測定されます。
JavaScript Heap   Hermes JSエンジンがJavaScriptオブジェクトとランタイムデータに使用するメモリ。
  Allocated Bytes HermesヒープでJavaScriptのオブジェクトと値に割り当てられた合計メモリ量を表示し、JSコードの実際のメモリ使用量を示します。
  External Bytes Hermesのガベージコレクター(GC)が管理する外部リソースに使用されるメモリ。
  Number of GC Events Hermes GCが実行したガベージコレクションサイクルの数。
  GC CPU Total Duration ガベージコレクションに費やされた合計CPU時間(ミリ秒単位)。
  GC CPU Duration % ガベージコレクションに使用されたCPU時間の割合。メモリ管理のオーバーヘッドを示します。
  GC Max Pause Time アプリ起動後の最長GC一時停止(ミリ秒単位)。メモリクリーンアップ操作による最大遅延を示します。

アプリのメモリ内訳の記録

分析する特定の期間のデータをキャプチャすることができます。

  1. Memory Monitorで、[⏺️ Start Recording] を選択します。
  2. プロンプトが表示されたら、記録セッションの名前を入力します。
  3. プロンプトが表示されたら、記録時間(タイムアウト)を入力します。デフォルトでは、録音タイムアウトは120秒です。
  4. Fire TV Stickで、アプリをリリースモードで実行します。
  5. セッションを終了するには、[⏹️ Stop Recording] を選択します。

    別のウィンドウでRecording Viewが開きます。

記録されたデータの分析

Recording Viewは、記録されたパフォーマンスデータの詳細な分析に役立ちます。Recording Viewを開くと、複数の内訳と視覚化の結果が表示されます。

  • タイムライン
  • PSS
  • USS
  • トレース
  • JSヒープ
  • GC概要
複数の内訳と視覚化の結果を表示するRecording View
Recording Viewによる記録データの分析

以下の理由から、GCアクティビティを注意深くモニタリングする必要があります。

  • GCが頻繁に実行されていることは、アプリがコアタスクに集中できず、メモリ管理に過剰な時間を費やしていることを示します。このような過剰なメモリ管理はアプリのパフォーマンスに影響を与え、実行速度を低下させ、ユーザー操作への応答速度を低下させます。

  • Stop-the-World(STW)イベント中は、メモリを解放するためにGCがアプリを一時的に停止させます。GCが動作している間はアプリがユーザー入力の処理やインターフェイスの更新を完全に停止するため、この一時停止によりアプリの応答性が著しく低下します。

以前の記録を開く方法

以下のいずれかの方法を使用します。

オプション1(推奨): クイックオープンを使用するこの方法では、VS CodeのインターフェイスまたはCLIから記録にアクセスできます。

VS Codeから:

  1. Memory Monitorの記録ファイル(例: Basic-memory-recorder[タイムスタンプ].json)を、VS Codeクイックオープンを使用して、またはプロジェクトのgeneratedディレクトリで見つけます。
  2. ファイルを1回クリックしてプレビューするか、2回クリックしてアクティブモードで開きます。

CLIから:

  1. ターミナルウィンドウを開き、次のように入力します。

    code <<記録ファイルのパス>>
    

ターミナルがcodeコマンドを認識しない場合:

  1. VS Codeを開きます。
  2. コマンドパレットを開きます。

    • Mac: Cmd+Shift+P
    • Linux: Ctrl+Shift+P
  3. 「Shell Command: Install code command in PATH」を実行します。
  4. コマンドを再試行します。

オプション2: VS Codeコマンドパレットを使用するこの方法では、VS Codeに組み込みのコマンドインターフェイスを使用して記録にアクセスできます。また、クイックオープンを利用できない場合にも使用できます。

  1. VS Codeを開きます。
  2. コマンドパレットを開きます。

    • Mac: Cmd+Shift+P
    • Linux: Ctrl+Shift+P
  3. Vega: Open Recording View」と入力します。
  4. 一覧から以前の記録セッションを選択します。

    選択したセッションのRecording Viewが新しいウィンドウで開きます。別のタブで現在のセッションを開いている場合は、新しいセッションにフォーカスが移ります。


Last updated: 2025年10月1日