2011-08-16 4 views
0

私はiPod touchでカメラを使用し、プレビューを表示して写真を撮る(すべてAVCaptureSessionを通して)というアプリを開発しています。 私が理解していないことは、メモリ警告の後でlaunchdによって私のアプリが殺されることがあるということですが、それはRAMで2 MBを超えません(添付のスクリーンショットを参照)。 コンソールは、一方で私になぜ起動アプリケーションが2 MBのRAMしか使わないのですか?

Aug 16 15:16:35 Wiggler[109] <Warning>: Received memory warning. Level=1 
... 
Aug 16 15:16:58 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.tMyCompany.Wiggler[0xd83d]) Exited: Killed: 9 

を伝え、私は正常に任意のクラッシュやメモリ警告なしRAM(100MB以上)のトンを使用して他のアプリを実行することができます。

私のアプリで何が問題になっていますか?私は何が欠けていますか? AVFoundation(AVCaptureSessionsを提供するフレームワーク)内のバグかメモリリークですか?なぜ私のアプリはほとんどメモリを使用している間に殺されているのか分かりません...

ありがとうございました。

instruments screenshot

+0

私は実際に100 MBのライブバイトでアプリを疑っています。どのようにすべてのビューコントローラの場合didRecevieMemoryWarningメソッドでいくつかのメモリを解放しようとしていますか? –

+0

あなたのアプリにレークがありますか? –

+0

私はそうは思わない。アプリは1分前に​​[漏れが検出されずに]クラッシュしました(http://img29.imageshack.us/img29/60/memoryleaks.png)。インストゥルメントはこれまで何度かの漏れがありましたが、32バイトを超えていませんでした。 – Daladim

答えて

4

あなたは、ほぼ確実に何の割り当てがあなたを示していることをより多くのメモリを使用しています。

スナップショットからは、VMトラッカーツールを使用していないようです。 VMトラッカーの「スナップショットを自動的に作成する」オプションを選択し、「ダーティー」と「常駐」の両方のサイズをチェックします。

これにより、アプリのメモリ使用量をより「グローバルに」把握できます。とにかく、メモリの警告が入る理由を説明することができます。

"ダーティ"と "常駐"メモリの優れた説明は、look at this from S.O.

+0

Hum ... VMトラッカーツールを実行しているとき、[私の持っているものは](http://img163.imageshack.us/img163/5708/instruments2.png)です。しかし、私はそれを完全に理解していません。汚れた記憶は正確には何ですか?私はどこかで私の手の届かないところにあるメモリを読んでいますが、それはガベージコレクタによって処理されるべきですが、この説明は奇妙に聞こえます...なぜGCはあまりにも多くのダーティなメモリを保持するのでしょうか?これに関するすべての説明は非常に高く評価されます!ありがとう:) – Daladim

+0

おかげであなたの編集。それは私が1時間前に読んだものです。しかし、私が得ないのは、この汚れた記憶は記憶の警告を引き起こすのだろうか?もしそうなら、私は何をすることができますか?(それはGCによって見られるので、削除の責任を負うべきでしょうか?) – Daladim

0

小さなキャプチャ用にAVCaptureSessionを設定し、ダーティなメモリ使用にどのような影響があるかを確認してください。 GCは、使用中のメモリを収集できません(キャプチャやプレビューなどの一部として)

関連する問題