2012-11-13 6 views
5

私は400-500 XML個のファイルをダウンロードして解凍して解析する巨大な同期プロセスがあります。このデータを使用して、RestKit API上に多数のコアデータオブジェクトを作成しようとしています。最初は、自動解放プールを使用せず、コアデータを最後まで保存しようとしたため、ライブバイトが450MB +のメモリ警告が表示されました。機器でのメモリの警告

これを固定して、コアデータに頻繁に保存し、@autoreleasepoolブロックを使用しました。私のアプリをインストゥルメントで実行すると、ライブバイトが20MB〜30MBしかないことがわかりました。常にメモリを解放し、決してサイズアップしません。このプロセスはうまくいく。しかし、私は楽器なしでアプリを起動すると、ビューファイルの後に私はMemory Warningを取得します。後でアプリがクラッシュする

instrumentsツールの有無にかかわらずアプリを実行する際の相違点は何ですか?なぜそれは別の結果で終わるのですか?

+2

違いは、通常、Instrumentsでプロファイリングするとリリースビルドが行われ、Xcodeで実行するとデバッグビルドが行われることです。しかし、どのようにこれがこの状況に影響を与える可能性があるか分からない。 – borrrden

+3

たとえば、デバッグ設定でゾンビを有効にできますが、リリース設定 – hooleyhoop

+0

人ではありません - 私はこのプラットフォームを愛しています。私は、楽器がリリースビルドを使用していることを知りませんでした。私のオブジェクトが大きすぎるので、ゾンビを有効にすることは失敗でした。リリースビルドを使用しているとき、すべてが魅力的なように機能しています。 Plsはそれを私がそれを受け入れることができるように答えとして与える。あなたはそれがどれくらい私を助けたのか分かりません。ありがとうございました:) – NDY

答えて

4

私はこのページに出会ったことをとてもうれしく思っていますので、この回答を追加しています。

何か@borrrdenは部分的に真です。プロファイルするときに使用するビルド設定を構成できます。これを設定するにはXcodeに行き、Edit Schemeダイアログを開き、左のメニューでProfile XXX.appを選択します。ビルド構成(デバッグまたはリリースのいずれか)を選択することができます。 @hooleyhoop

enter image description here

解決策を見つけるために、より重要なでしたコメントしました。 Profile Build ConfigurationがDebugに設定されていても、プロファイリングとXcode内のデフォルトの実行との違いはあります。 診断実行セクションに指定できます。そこに、ゾンビオブジェクトを有効にするというオプションがのメモリ管理の下にあります。このオプションがで、チェックされていないことを確認してください()。

enter image description here

プロファイリングしながら、これらの診断の実行設定は使用されません。それはあなたが経験している行動の説明です。プロファイルセクションには診断タブもありません。


結果は私のゲーム(ガンプ)はゾンビがが有効なオブジェクトとメインメニューに何もしないの5分後に墜落したということです。一度私が無効にしたゾンビオブジェクト、私のゲームは無限の時間知っている限り実行されます。 45分後、まだメモリの警告はありません。

+2

ゾンビを有効にすると、死んだオブジェクトにメッセージを送信するときに追跡できるように、すべてのオブジェクトが意図的にリークするためです。 – JustSid

+0

さて、それが理由です。私は確信していませんでした。ありがとうございました。私はそれがまだ忘れられているかもしれないと思います。 –

関連する問題