手順1:クラッシュの理由を特定する
- 集約クラッシュレポートを開きます。 デバイスから、集約クラッシュレポート(ACR)をダウンロードして開きます。
-
ACRファイルで
CrashReason:SIGSEGVを探します。 -
アプリログの「
HermesGC OOM」をチェックして、JavaScriptヒープメモリオーバーフローが発生していることを確認します。
手順2:メモリリークのシナリオを特定する
- Visual Studio(VS)Codeを開きます。
- Memory Monitorを起動します。 アプリのメモリ消費量の検査にある手順に従ってください。
-
JavaScriptのヒープグラフをトラッキングして、200MBのしきい値に近づいているかどうかを確認します。
- セッションを記録してクラッシュシナリオをキャプチャします。 アプリのメモリ内訳の記録にある手順に従ってください。
手順3:JavaScriptヒープスナップショットをキャプチャする
-
Chrome DevToolsを関連付けます。
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は、リークがあったオブジェクトを保持サイズでランク付けします。保持トレースを使用して、オブジェクトツリー内のリークのあるオブジェクトを特定します。
Chrome DevToolsによる分析
- Chrome DevToolsを開き、[Memory] タブに移動します。
- JavaScriptヒープスナップショットをアップロードします。
-
さまざまなビューを使用してJavaScriptヒープスナップショットを分析します。
- [Shallow Size] で並べ替えて、最も重いオブジェクトを見つけます。
- [Retained Size] で並べ替えて、最も影響の大きいオブジェクトを特定します。
関連トピック
- CPU使用率のモニタリング
- Chrome DevToolsを使用してパフォーマンスを測定する方法
- 💬 コミュニティ:アプリのメモリが不足しているかどうか、どうすれば確認できますか?
- 💬 コミュニティ:バグレポートのログスクリプト

