Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
Ring
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート
メインコンテンツへスキップ
スレッド状態の視覚化により、アプリのライフサイクル中のスレッドの状態を視覚化できます。これは、JavaScript(JS)アプリのパフォーマンスのトラブルシューティングと最適化に役立ちます。 スレッド状態の視覚化を効果的に使用するには、このページのガイダンスに従ってください。

スレッドの状態について

スレッドには、Running、Runnable、Runnable (Preempted)、Sleeping、Uninterruptible Sleep、Stopped、Idle、Exitなど、さまざまな状態があります。各状態の正確な定義は、アプリパフォーマンスのモニタリングと記録の「スレッドの状態」を参照してください。

パフォーマンスに関する問題の原因の特定

スレッド状態の視覚化によって、レイテンシの増加、応答不能、クラッシュ、一貫性のない動作など、アプリのパフォーマンスに関する問題を把握できます。パフォーマンスに関する問題で、スレッドの状態情報を使用して特定可能な考えられる原因を次の表に示します。

Vega Studio Performance Extensionの使用

Vega Studio Performance Extensionを使用すると、Activity MonitorやMemory MonitorのRecording Viewでスレッド状態を視覚化できます。JSアプリのパフォーマンスの問題をトラブルシューティングするには、次の手順を実行します。
  1. Activity Monitorで記録を開始します。
  2. 問題のある動作をアプリ内で再現します。
  3. 記録を停止してRecording Viewを生成します。これには、スレッド状態の情報を含むTracesビューが含まれます。

スレッド状態データの分析

アプリのパフォーマンスの問題を特定するには、次の手順を実行します。
  1. Tracesビューでスレッド状態データを分析します。
  2. スレッド状態のデータが、スレッドの実行時間が長い、CPU使用率が高い、CPUの競合など、前述の原因のいずれかに対応しているかどうかを調べます。

ユースケース

次の例は、スレッド状態の視覚化がアプリのパフォーマンスのトラブルシューティングと最適化にどのように役立つかを示しています。

ユースケース1:非効率的なアルゴリズムが原因で実行時間が長いスレッドのトラブルシューティング

VegaVideoAppのテスト中に、ホーム画面や詳細ページを表示したときに、応答性が低下する問題が発生しました。 問題を特定するために、問題のある動作をアプリで再現しながら、Activity Monitorで記録を開始しました。記録を停止すると、Activity Monitorによって、スレッド状態の情報を示すTracesビューを含むRecording Viewが生成されました。Tracesを調べたところ、JSスレッドが最大5秒間実行されていたことがわかりました。これは、非効率的なアルゴリズムが原因でスレッドの実行時間が長くなっていることを示しています。 スレッド状態の視覚化のスクリーンショット。JSスレッドが長時間実行される問題が明らかになっています。 CPUプロファイラーのフレームグラフを調べたところ、getClassicsメソッドが原因でDetailsScreenの実行に5秒かかっていました。 getClassicsメソッドがパフォーマンスのボトルネックであることを示すフレームグラフのスクリーンショット。 アプリのコードを見直してみると、データの並べ替えやフィルタリングを行う際のコードが非効率的であり、パフォーマンス遅延の問題が発生していることがわかりました。
この問題を解決するには、不要な入れ子になったループを削除します。次に、Tracesビューに再度アクセスして、アプリのパフォーマンスが向上するかどうかを確認します。 非効率的なコードを削除した後、パフォーマンスが改善されたことを示すスレッド状態のスクリーンショット。

ユースケース2:スクロールアプリのCPU使用率が高い場合のトラブルシューティング

React Native Flatlistコンポーネントを使用して、200行を異なる色で表示するシンプルなスクロールアプリを作成しました。Activity Monitorで確認すると、スクロール中にThread State Viewに「Running」の状態が頻繁に表示され、CPU使用率が高いことが示されました。CPUプロファイラーのフレームグラフでも高いアクティビティが示されました。これは、FlatListコンポーネントが効率的に機能していないことを示唆しています。 FlatListのスクロール操作中に高いCPU使用率が検出されたことを示すスクリーンショット。 次のコード例は、Flatlistコンポーネントをアプリに追加する方法を示しています。
このパフォーマンスの問題を解決するには、FlatListコンポーネントをShopifyのFlashListコンポーネントに置き換えます。これにより、スクロールシナリオのパフォーマンスが向上します。
アプリのパフォーマンスを再テストし、Thread State Viewの「Running」状態の数が減少しているかどうかを確認します。CPUプロファイラーのフレームグラフにも、アクティビティの減少が示されます。 FlashListコンポーネントに切り替えることでパフォーマンスがどのように向上するかを示すスクリーンショット。 FlashlistがFlatlistより優れている点については、ベストプラクティスを参照してください。

関連トピック


最終更新日 2026年10月27日