手順1:クラッシュの理由を特定する
- 集約クラッシュレポートを開きます。 デバイスから、集約クラッシュレポート(ACR)をダウンロードして開きます。
-
ACRファイルで
CrashReason:SIGSEGVを探します。 -
アプリログの「
HermesGC OOM」をチェックして、JavaScriptヒープメモリオーバーフローが発生していることを確認します。
手順2:メモリリークのシナリオを特定する
- Visual Studio(VS)Codeを開きます。
-
Memory Monitorを起動します。
- アプリのメモリ消費量の検査にある手順に従ってください。
- JavaScriptのヒープグラフをトラッキングして、200MBのしきい値に近づいているかどうかを確認します。
- セッションを記録してクラッシュシナリオをキャプチャします。
- アプリのメモリ内訳の記録にある手順に従ってください。
手順3:JavaScriptヒープスナップショットをキャプチャする
- Chrome DevToolsをVega向けReact Nativeアプリにアタッチします。Chrome DevToolsの起動にある手順に従ってください。
- [Memory] タブに移動し、[Heap Snapshot] を選択します。
- [Take snapshot] をクリックします。
- 下矢印をクリックして、スナップショットをホストコンピューターにダウンロードします。
手順4:JavaScriptヒープスナップショットを分析する
MemlabまたはChrome DevToolsを使用して、JavaScriptヒープスナップショットを分析します。 Memlabによる分析-
Memlabをインストールします。
-
解析を実行します。
Memlabは次の3つのヒープスナップショットを比較します。
- ベースライン - 初期状態
- ターゲット - 潜在的なリークが発生した後の状態
- ファイナル - クリーンアップ後の状態
--trace-all-objects引数を指定すると、すべてのターゲットページオブジェクトに潜在的なリークのマークが付けられます。memlab find-leaksは3つのヒープスナップショットを比較し、要約をテーブル形式で表示します。
- クリアされていないオブジェクトをテーブルから検索します。
- 永続オブジェクトの割り当てを解除するためのコードを確認します。
- 保持トレースを確認します。 Memlabは、リークがあったオブジェクトを保持サイズでランク付けします。保持トレースを使用して、オブジェクトツリー内のリークのあるオブジェクトを特定します。
Memblabの詳細については、以下を参照してください。
Chrome DevToolsによる分析
- Chrome DevToolsを開き、[Memory] タブに移動します。
- JavaScriptヒープスナップショットをアップロードします。
- さまざまなビューを使用してJavaScriptヒープスナップショットを分析します。
- [Shallow Size] で並べ替えて、最も重いオブジェクトを見つけます。
- [Retained Size] で並べ替えて、最も影響の大きいオブジェクトを特定します。
関連トピック
- CPU使用率のモニタリング
- Chrome DevToolsを使用してパフォーマンスを測定する方法
- 💬 コミュニティ:アプリのメモリが不足しているかどうか、どうすれば確認できますか?
- 💬 コミュニティ:バグレポートのログスクリプト

