2013-10-16 6 views
15

「メモリ」使用チャート/グラフはXCode 5で正確に表されていますか?デバッグナビゲータウィンドウは何ですか?デバッグ中のXCode 5のメモリグラフ/チャート

ARCを無効にし、ストーリーボード/ xib(旧式)を使用しないiOSアプリプロジェクトがあります。すべてのメモリ管理は、retain/release/autoreleaseを使用して手動で行われます。

私がXCode 5でプロジェクトをデバッグすると、メモリパイチャート/グラフは、アプリケーションの実行中に徐々にメモリ使用量が増加し、30分以内に1GBのメモリフットプリントを超えています。

大まかに、2〜3秒あたり0.1〜0.3MBの増加を続け、非常に稀少なメモリの減少/減少(30秒あたり0.138MBの大きさの<)です。これは、メモリ管理に関する懸念(メモリリーク)

enter image description here

ですか?メモリ分析(XCode 4.6でInstruments/Allocations/Memory Leakを使用)を行ったが、漏れは見つからなかった。

答えて

48

自分自身で見つかった回答です。残念ながら、私は、デバッグモード用NSZombieEnabled(ゾンビオブジェクトを)持っていた - 下記参照 - (メニュー製品>スキーム>編集スキーム

enter image description here

通常NSZombieEnabledツールは、にメモリーにでもリリースされたオブジェクトを保持します開発者がリリースされたオブジェクトを見つけるのを助けます。私は未チェックは「ゾンビはオブジェクトの有効化」オプション、メモリ使用量が半分も時間のアプリの使用状況後約10メガバイト(常に増加していない)に安定化した後What is NSZombie?

- - このリンクを参照してください下記を参照してください -

enter image description here

ボトムライン - メモリ使用量を分析する場合は、「ゾンビオブジェクトを有効にする」をクリアしてください。

+1

FWIW、これは私を殺していた。明らかに、プロファイルされている私のリリースは、ゾンビが有効になっているデバッグビルドに表示されているXcodeと同じメモリ使用量と一致しませんでした。ありがとう。 – migs647

+1

これは啓示です。どうもありがとうございます。 – Stavash

+0

ありがとうございます。私はインストゥルメントでプロファイルし、同じことを見ないので、ナッツに行きました。私はしばらく前にゾンビオブジェクトを有効にするをチェックしました。 – VaporwareWolf

3

あなたのアプリが使用するメモリを測定するだけです。だからそれが増加している場合は、メモリリークでなければなりません。

リーク解析ツールを使用する場合は、ガイドラインとして使用します。それは漏れを見つけるのに役立つかもしれませんが、すべての自動化されたツールではそれがすべて見つからないことがあります。特定のコード(特に動的な部分)は、自動化されたツールでメモリを賢明にすることを予測するのが難しいかもしれません。

+0

XCode 4.6 Instrumentsで解析したところ、メモリ使用量は1.5GBに近づきましたが、アクティブメモリ列の使用量は2〜3MBに近いことがわかりました。また、メモリリークはブロットにフラグを立てませんでした。これをキャッチするにはどんなツールやプラクティスをお勧めしますか(リーク!)? – Ashok

+1

iOSシミュレータでテストしないでください。誤っている可能性があるので、一つの提案です。しかし、ここでは、メモリリーク機器がメモリリークを捕捉しない状況を説明するいくつかのビデオリンクがあります。 Part1:http://www.youtube.com/watch?v=4tvEFwWItQUパート2:http://www.youtube.com/watch?v = HBvBL_m2-5k –

+0

パート2では、analyzeオプションを使用することをお勧めします。これは、Instrumentツールでは検出できないメモリリークが発生する可能性があるためです。 –

1

重い処理ではメモリ(ヒープ)が無限に増加するが、Xcodeなしで全く同じバイナリを実行すると問題が発生する。メモリ使用量は問題ありません。 Xcodeの外部でテストすることを忘れないでください - 原因が分かりません。 NSZombiesと他のすべてのデバッグオプションは、オフです。

関連する問題