2

アプリはほぼ完成しており、Instruments を使用してパフォーマンスを最適化してから、アプリ ストアに提出しています。特定のアクション (外部サーバーからアプリ内の情報を更新する) を実行するたびに、ヒープが約 350 KB 増加することに気付きました。私がここで見つけたスタックオーバーフローに関する調査と Apple のドキュメントでは、問題のあるコードを見つけるためにヒープ ショットを実行することが提案されています。ただし、問題のあるコードに移動する代わりに、メモリアドレスが表示されます。

この情報を利用する方法はありますか?または、別のツールを使用する必要がありますか? 私はインストゥルメントにかなり慣れていないので、助けていただければ幸いです。

スクリーンショットをお見せしますが、ここでの私の評判はまだ十分ではありません。

4

2 に答える 2

1

bbum のチュートリアルから始めましょう:リークがリークでないのはいつですか?

簡単に言うと、リークの原因となっている正確なコード行を教えてくれるツールはありません。システムは、どこでミスをしたかを知りません。いつメモリが割り当てられたかを認識し、メモリが解放されていないことを認識していますが、メモリを解放するつもりだったかどうかを知る方法はありません。そもそもメモリを割り当てた理由を知る方法がないため、メモリをいつ解放する必要があるかは特にわかりません。

ヒープ ショットを使用すると、余分なオブジェクトが何であるかを発見でき、そこからそれらのオブジェクトの使用方法を監査できます。

于 2013-08-02T16:24:55.710 に答える
1

いくつかの考え:

  1. ヒープ ショットでは、Instruments の一番右のパネルに拡張された詳細を表示することを忘れないでください ( +Eまたは [View] メニューから [Extended Detail] を選択します)。

    拡張詳細を表示すると、スタック トレースが表示されます。そこにあるメソッド名 (ライト グレーではなく黒色) をダブルクリックすると、割り当てを生成した行 (明らかに根本的な問題である必要はありませんが、オブジェクトが最初に割り当てられた場所が表示されます。これが開始場所です)。

    ヒープショット分析で拡張詳細を表示

  2. そうは言っても、私は通常、最初に標準の割り当てツールに焦点を当てます。上部の割り当てインストルメント タイムラインをドラッグして、この実行時間枠内の割り当てを強調表示しますoption。次に、[呼び出しツリー] を選択します。自分のコードだけに集中するには、[呼び出しツリーの反転] をオンにします。 」および「システム ライブラリを非表示」ボックス:

    オプション 割り当てツールでドラッグ

    私にとっては、システム割り当てをふるいにかけることなく、その時間枠内に行われた割り当てを特定するより効率的な方法だと思います。

  3. Xcode の静的アナライザーでコードを実行することを忘れないでください ( shift+ +Bまたは [製品] メニューの [分析] を選択します)。Instruments を使用してアプリを実行する前に、クリーンな健康状態を取得する必要があります。

于 2013-08-02T17:07:02.410 に答える