1. ホーム
  2. iphone

[解決済み] Instruments ObjectAlloc: ライブバイトとオーバーオールバイトの説明

2023-06-10 10:50:34

質問

私のアプリケーション (iPhone) がいつどこで何をしているのか理解するために、Instument の ObjectAlloc ツールを使っています。

これらの統計の基本的な説明が本当に欲しいです。

  • ライブ バイト
  • #ライブ
  • #トランジション
  • 全体のバイト数

アプリケーションが使用しているメモリの量を調べるとき、Live Bytes と Overall Bytes のどちらを見るべきでしょうか。リークされたメモリは含まれますか? また、Transitory object とは何ですか?

ありがとうございます。

どのように解決するのですか?

ObjectAlloc は、プログラムが実行されている間、すべてのメモリの割り当てと解放を追跡します。

Living bytes, or Net bytes は、タイムラインで選択した時刻にアプリケーションが使用しているメモリの量です。リークされたメモリは決して解放されないので、リークされたメモリも含まれます。

#Living は、特定のサイズ/オブジェクトタイプのいくつの割り当てが起こったか (そしてまだ割り当てられているか) を示します。これは、リークを探すときに非常に便利です。

たとえば、ある動作 (モーダルビューコントローラーから出たり入ったり) を繰り返し実行し、その際に #Living が毎回同じ量だけ増えているのを見たら、おそらくそのオブジェクトをリークしているのでしょう。その場合、オブジェクトを割り当てているコードの正確な行を掘り下げて確認し、さらにそれぞれが作成されたタイム インデックスを確認することができます。

Overall bytes には、解放されたメモリも含まれます。パフォーマンスの最適化のためにこの数字を追跡することは有用ですが、現在のメモリ フットプリントを確認したりリークを探したりするだけであれば、そうではありません。