
こんばんは! 前回のSwiftのメモリリークをやらかした話に関連して、負荷のチェックについても調べたので残しておきたいと思います。
↓以前メモリリークでやらした話はこちら
Instrumentsとは
iOSアプリ実機のメモリやCPU等の状況をモニタリング、記録できる便利ツールです。 Chromeでは「開発者ツール」でメモリの使用状況を計測できますが、それのiOS版に近いツールです。 アプリ実行中の負荷計測やメモリの状態をリアルタイムで確認できます。
Instrumentsの嬉しいところは実機の状態をモニタリングできるところです。 なかなか検出の難しいメモリリークの原因を確認する為にも活用できます。
以前にメモリリークをやらかしてしまいまして、その調査の際にガッツリ使わせて頂きました。
動作環境
- macOS Big Sur 11.1
- Xcode 12.3
使い方
アプリをデバッグ実行した状態にする
まずはXcodeでプロジェクトを開き、デバッグを実行します。 デバッグ環境は実機、Simulatorどちらでも構いません。 今回はSimulatorでiPadをデバッグ実行した状態にします。
Instrumentsを起動する
デバッグ実行した状態のまま、 「Xcode」→「Open Developer Tool」→「Instruments」を選択。

計測するパラメータを選択します。 後から追加・修正はできますので、今回はひとまず「Leaks」を選択して「Choose」をクリックし、Instrumentsを起動します。 Leaksはメモリリークが起こったかどうかを測定してくれます。

計測対象を指定する
Instrumentsのウィンドウが立ち上がりますので、左上の端末名が表示されている部分をクリックし、デバッグ中のアプリを指定します。 CameraTestというのが今回用意しているサンプルアプリの名前になります。

アプリを指定したら、計測開始のアイコンをクリックして計測を始めます。

計測する

計測開始後、計測結果がタイムライン上に表示されていきます。
なお、実機でデバッグしながら計測するとそれなりに負荷がかかるようで、若干実機側でラグが発生することがありましたので、そのことも考慮して検証した方がいいと思います。
記録結果はファイル保存も可能です。
Allocations
Allocations行ではメモリ割り当ての状況をグラフィカルに表示してくれます。 行をクリックするとスクリーンショットのようにメモリ割り当ての詳細を数値で確認できます。
メモリが明らかに増え続けている場合はソースに何らかの問題があるか疑ってみて良いかと思います。
Leaks
Leaks行の緑色のチェックマークはメモリリークは発生していないことを示しています。 メモリリークが起きた場合は赤いバツマークが表示されます。
計測項目を追加する

Instrumentsのウィンドウの右上の+アイコンをクリックすると、項目一覧が表示されますので追加したいものを選択しましょう。
あとがき
もし、アプリが意図せず落ちたりするような不具合があった場合は、このInstrumentsの表示を見ながらデバッグしてみるのも1つの手です。
パフォーマンス周りの問題は、普通にコーディングしてデバッグしていても気づきにくい部分ですが、定期的な確認は必要ですね。