2012-11-06 12 views
7

Objective-Cアプリケーションを約8時間実行した後、最終的に私のマシンはこのエラーメッセージを表示します。しかし、インスツルメントを使用した24時間後には、アプリが楽器なしで8時間以内に行うことができることの約1%しか完了していません。あなたのMac OS Xの起動ディスクにはアプリケーションメモリ用の空き容量がありません

私のアプリケーションは基本的に入力ジオメトリを取り、ナビゲーションメッシュを作成します。

私の質問:問題がどこにあるかをどのように把握できますか?私はアプリケーションのどこかで私がメモリを要求しており、決してそれを解放しないと確信しています。分析を実行しましたが、漏れは1件見つかりましたが、それほど重要ではなく、修正しました。

私はインストゥルメンテーション/リークのためにインストゥルメンツを運営していますが、16分後には何も目に見えません(私はそれを続けるつもりです)。ここで

は、それがこれまでATの場所のスナップショットです: Instruments

誰もが、私はこれをデバッグすることができますどのように他の任意のアイデアがありますか?私は約20時間これを実行できるようにしたいのですが、それは必然的に死に至るのに対し、それは完了することができます:/

ありがとうございます!

+0

リークがありますか?あなたのアルゴリズムは、使用可能な仮想メモリを超えるデータ構造を単純に生成できますか? 64ビットプログラムは本当に驚異的な量のメモリに対処することができますが、それは実際に*大量に任意に割り当てることはできません。大体あなたのデータがどれだけ大きくなると思いますか?それをどうやって決めましたか? –

答えて

9

あなたはチャンピオンのように記憶を漏らしています!

  • 割り当て楽器で「唯一のライブの割り当てを追跡する」ターンオン

  • 「トラック参照カウントイベント」(またはそれが呼ばれているもの)

  • セッションを再実行し、ターンオン「全体のバイト数」列でソートしてください

  • 先頭に、最もメモリが空いている割り振りを開始し、小さな矢印をクリックして、それらの割り当てがどこから来ているのかを確認してください。

したがって、私はしばらく前に書いたthis weblog articleが役に立つかもしれません、たくさんHeapshot分析のようなもので、。

+0

私はこの方法を試しています。私は23時間稼働させており、完了するために必要な1131のタスクのうち14を完了しました。通常、1131のタスクはすべて合計約20分かかります。実際にすべてのタスクを完了できる場所でデバッグする方法に関する提案:/ Instrumentsは@ 100%CPU(800%のうち)をまだ実行していますが、それは私が推測し続けることができません – Geesu

+0

ここに結果へのリンクがありますfar:https://dl.dropbox.com/u/15806454/dump/stackoverflow_instruments.png – Geesu

関連する問題