計測器は多くのメモリを消費します。
記録する内容によっては、メモリ使用量を減らすことができます。たとえば、多くの場合、記録するもの (または記録しないもの) を指定したり、サンプリング周波数を低くしたり (該当する場合) できます。
100MB/秒は異常に高いです。その時間に録音しているものについて、より正確に説明できますか? (使用する機器、記録するプロセスの内容など)。
Xcode 3 ではメモリの使用量が大幅に削減されました。
ツールセットを 32 ビット プロセスとして実行すると、メモリの使用量をいくらか減らすことができます。
最後に、2GB の物理メモリは、Xcode + Instruments + iOS Sim には何の役にも立ちません。fwiw、私は定期的に 8 GB 以上の物理メモリを使い果たします。ブー。幸いなことに、4 GB または 8 GB が必要な場合、メモリは安価です。
アップデート
Allocations、Leaks、Zombiesのインストゥルメントを使ってみた
必要に応じて、これらのテストを個別に実行できます。
割り当て
アプリが大量の割り当てを作成していない場合、割り当て自体が大量のメモリを消費することはありません。
このインストゥルメントでメモリを減らすために、興味のないいくつかのオプションを無効にすることができます:
- 各参照カウント操作を記録しない
- アクティブな割り当てのみを追跡する
- ゾンビ検出を無効にする
- C++ オブジェクトを識別しない
漏れ
- は、リークの履歴が必要な場合にのみ割り当て手段を意味します。
リーク検出自体は、メモリをスキャンし、基本的に割り当てを複製するため、多くのメモリを消費する可能性があります。100MB が割り当てられているとします。リークは定期的にプロセスを一時停止し、メモリを複製してパターンをスキャンします。これにより、アプリよりも多くのメモリが消費される可能性があります。iirc、インストゥルメントのサブプロセスとして実行されます。
ゾンビ
ゾンビの検出は、通常、参照カウントの記録を意味します。ゾンビをデバッグするときは、ゾンビを解放しないことが最も効果的です。それらを解放すると、一時的なゾンビしか検出されない可能性があります (楽器にそのオプションがあるかどうかはわかりません...)。objc の割り当てを決して解放しないと、明らかにより多くのメモリが消費されます。プロセスでリークを実行すると、ヒープ サイズが大きくなるため、より多くのメモリが消費されます。リークとゾンビを組み合わせてはなりません。
これらのオプションのいくつかを無効にして個別にテストすることで、総消費量を削減できるはずです。
ノート
- 最先端の開発者ツールのリリースは、非常に不安定な場合があります。問題がある場合は、公式リリースに固執することが役立ちます。
- 割り当てだけで osx 単体テスト (主に c/c++ API) を実行できます。記録時に約 1MB/秒を消費します。何かが間違っているように見えますが、おそらくそれはプログラムに問題があることを示しています (多くの一時的な割り当て?)。
- データの表示方法や充電/フォーカス設定を変更すると、大量のメモリが必要になる場合があります。たとえば、「すべて復元」では、大きなサンプルを処理するために数 GB が必要になる場合があります。
- 100MB/s が正確な数値である場合は、バグを報告します。Instruments が多くのメモリを消費することは知っていますが、Instruments が多くのメモリを消費すると予想されていても、アイドル状態のアプリを記録するには非常に高くなります。
幸運を