2013-03-20 11 views
6

私のアプリは、私が理解しがたい理由から、多くのクラッシュがありました。それがクラッシュだということはあまりありません - それは外で「不明」のプロセスによって殺されています:Xcode Instrumentsのアロケーションツールがかなり足りない

Processes 
    Name  <UUID>  rpages  recent_max  [reason]   (state) 

    test-app <....>  167111  167111  [per-process-limit] (frontmost) (resume) 

私は場合、私は、メモリの巨大なブロック、または無数の小さなブロックを割り当てたが、私は」ことを理解できますそんなことは何もしない。 Instrumentsのプロファイリングでは、大容量のコンテンツを読み込んだときにアプリが約8 MBしか使用しないことがあり、時には最大13 MBをスパイクすることがあります。深刻なリークはなく、アプリは非常に迅速に殺されることがよくあります。

同僚がActivity Monitoryを使用して、シミュレータで実行中にアプリケーションのメモリ使用量を確認し始めたところ、起動時にメモリが約70 MB(シミュレータでは多少異なると思われます)から800 MB特定のライブラリを使用しています。だから、私はシミュレータではなくデバイス上でプロファイリングを始めました。

Instruments screen shot

そう... VMトラッカーは、そのいくつかの重要なメモリの使用を参照してくださいすることができますように見えます:割り当てツールは、アプリが8っぽいMBを使用しますが、VMトラッカーはまた別の話を伝えたことを報告し続け割り当てはできません。

割り当てツールがこのアプリケーションで使用しているメモリの99%が不足しているのはなぜですか?

更新:はnielsbotの質問に応えて、私は、VMトラッカーの情報をよく見ていたし、私は割り当てでは見ていないよメモリの大部分は、Core Animationのに起因していることがわかった。

VM Tracker screenshot

+1

私はVMのスペースが共有フレームワークや、メモリマップのようなものを含んでいると思います割り当てはできません... – nielsbot

+0

地域の表示には何が表示されますか? – nielsbot

+1

実際には、回答に貼り付けた出力に「rpages」(常駐ページ)と具体的に言及しています。私はあなたがフレームワークの "高水"住民のページを制限しようとしなければならないと思います... – nielsbot

答えて

2

私はVMのスペースは、私が常駐サイズが使用されるRAMの実際の量に近い推測

...割り当てがない場合がある共有の枠組みや、メモリマップのようなものを含んでいると思います。純粋なVMメモリは、消費された実際の物理RAMではなく、アドレス空間にマップすることができます。

例えば、サファリを見て、私は1.92ギガバイトの仮想メモリがマッピングされた参照が、私は理にかなっていると思います549メガバイトの居住者、に近い... enter image description here

関連する問題