Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
Ring
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート
メインコンテンツへスキップ
JavaScriptのメモリ例外は、アプリのクラッシュを引き起こし、ユーザーエクスペリエンスを低下させます。JavaScriptのヒープ制限(TVプロファイルの場合は200MB)を超えると、Hermesガベージコレクター(HermesGC)のメモリ不足エラーが発生します。一般的な要因として、メモリリーク、大規模なデータ構造、非効率的なリソースクリーンアップなどが挙げられます。 このページでは、メモリの問題を特定、分析、解決する手順について説明します。

手順1:クラッシュの理由を特定する

  1. 集約クラッシュレポートを開きます。 デバイスから、集約クラッシュレポート(ACR)をダウンロードして開きます。
  2. ACRファイルでCrashReason:SIGSEGVを探します。
  3. アプリログの「HermesGC OOM」をチェックして、JavaScriptヒープメモリオーバーフローが発生していることを確認します。
ACRの例:
ログの例:
HermesGC OOMログエラーを含むSIGSEGVは、実行時にJavaScriptヒープメモリの問題が発生していることを示しています。

手順2:メモリリークのシナリオを特定する

  1. Visual Studio(VS)Codeを開きます。
  2. Memory Monitorを起動します。 アプリのメモリ消費量の検査にある手順に従ってください。
  3. JavaScriptのヒープグラフをトラッキングして、200MBのしきい値に近づいているかどうかを確認します。 JavaScriptヒープメモリが200MBのクリティカルな制限に近づいていることを示すスクリーンショット。
  4. セッションを記録してクラッシュシナリオをキャプチャします。 アプリのメモリ内訳の記録にある手順に従ってください。

手順3:JavaScriptヒープスナップショットをキャプチャする

  1. Chrome DevToolsを関連付けます。 Chrome DevToolsをVega向けReact Nativeアプリにアタッチします。Chrome DevToolsの起動にある手順に従ってください。 メモリ分析のためにChrome DevToolsをVegaアプリに接続する手順を示すスクリーンショット。
  2. [Memory] タブに移動し、[Heap Snapshot] を選択します。 ヒープスナップショットをキャプチャするためのChrome DevToolsの [Memory] タブのスクリーンショット。
  3. [Take snapshot] をクリックします。 以下の画像はヒープスナップショットの例です。 キャプチャされたヒープスナップショットのスクリーンショット。ダウンロードオプションがあります。
  4. 下矢印をクリックして、スナップショットをホストコンピューターにダウンロードします。

手順4:JavaScriptヒープスナップショットを分析する

MemlabまたはChrome DevToolsを使用して、JavaScriptヒープスナップショットを分析します。

Memlabによる分析

  1. Memlabをインストールします。
  2. 解析を実行します。
    Memlabは次の3つのヒープスナップショットを比較します。
    • ベースライン - 初期状態
    • ターゲット - 潜在的なリークが発生した後の状態
    • ファイナル - クリーンアップ後の状態
    --trace-all-objects引数を指定すると、すべてのターゲットページオブジェクトに潜在的なリークのマークが付けられます。 memlab find-leaksは3つのヒープスナップショットを比較し、要約をテーブル形式で表示します。 ヒープスナップショットを比較したMemlabの分析テーブルのスクリーンショット。メモリリークの調査に使用できます。
  3. クリアされていないオブジェクトをテーブルから検索します。
  4. 永続オブジェクトの割り当てを解除するためのコードを確認します。
  5. 保持トレースを確認します。 Memlabは、リークがあったオブジェクトを保持サイズでランク付けします。保持トレースを使用して、オブジェクトツリー内のリークのあるオブジェクトを特定します。 メモリリークのオブジェクトパスを明らかにするMemlabの保持トレースのスクリーンショット。
Memblabの詳細については、以下を参照してください。

Chrome DevToolsによる分析

  1. Chrome DevToolsを開き、[Memory] タブに移動します。
  2. JavaScriptヒープスナップショットをアップロードします。
  3. さまざまなビューを使用してJavaScriptヒープスナップショットを分析します。 Chrome DevToolsのヒープスナップショットの分析画面と、複数のビューオプションを示すスクリーンショット。
    • [Shallow Size] で並べ替えて、最も重いオブジェクトを見つけます。
    • [Retained Size] で並べ替えて、最も影響の大きいオブジェクトを特定します。
さまざまな観点から分析するため、複数のビュー([Summary]、[Comparison]、[Containment]、[Statistics])を切り替えます。 スナップショット分析については、以下を参照してください。

関連トピック


最終更新日 2026年10月26日