2011-01-04 3 views
4

私はかなり奇妙な問題に直面しています。アクティビティモニタによるアプリケーションの報告されたメモリ使用量と割り振り音源との間に違いがある理由

応用〜80.Mb

テスト割り当てインストゥルメントを使用して、シミュレータ上で、現在は約30 MBの使用が、時にアクティビティモニタを使用してiPodの4グラムでテストすると、「〜133MB使用される物理メモリ」と「物理メモリを示していることを私に示して無料〜77Mb "

メモリの警告のため、私のアプリケーションは常にクラッシュします。

ActivityMonitorで使用される物理メモリと割り当て計器の違いは何ですか?

私はオブジェクトをリリースしたときに使用されたメモリの量が減少したため、私は信頼できるAllocations Instrumentを持っていましたが、ActivityMonitorではUSEDメモリの量が増えています。 割り当てられたメモリが使用されているメモリと同じであると思うか、間違っていると思いますので、理解してもらえますか?

編集: 私はデータがアクティビティモニターに表示される方法を理解しているようです。しかし問題は続く。 ActivityMonitorにグラフの下に列があります。私は自分のアプリケーションを見つけました。そして、記憶が増えているだけです。

リークはありません100%

+1

あなたを助ける人に感謝するためにいくつかの回答を受け入れる必要があります – Mark

+0

よろしく、私は:) – 0xDE4E15B

答えて

12

アクティビティモニターは、開発/デバッグの目的では無用です。すでに&を実行しているInstrumentsを持っていない場合、RPRVTが時間の経過と共に大きく成長するのを見ると、AMは役に立ちます。それでも、それは単なる症状であり、本当の問題を示すものではないかもしれません。

AMは、一連の異なるメモリ関連の数値を要約したものです。それは非常に大雑把な数字です。 Allocations計測器では​​、アプリケーション内の割り当てセット(Mac OS XではGCと非GC割り当ての両方を含むことができます)を要約しています。割り当てを減らすと、全体的なメモリ使用量は一般に低下します。

メモリが不足しているシステムでは、アプリケーションがメモリを返すよう要求しないことがあります。つまり、Activity Monitors番号のドロップが表示されないことがあります。

「100%漏れはありません」というのは、メモリー使用量を削減するための全体的な努力の約10%に過ぎないことにも注意してください。あなたのアプリは大量のメモリ消費のために投棄されています。これは、アプリのアルゴリズムが多くのメモリを使用するアーキテクチャ上の問題や、アプリがメモリを割り当てたり放棄したりするためです。放棄されたメモリがリークとして表示されないことがあります。たとえば、アイテムの重複が何度もキャッシュに入れられるが、検索されなかった書き込み専用キャッシュがあれば、メモリの使用は失敗に終わりますが、リークはリークを示さなくなります。

リークは、実行可能な参照が存在しない単なるオブジェクトです。生き生きとして参照されるオブジェクトは、依然として事実上リークであるかも

Heapshot analysisは、この種の問題を掘り起こすのに残酷に効果的です。

+0

あなたは正しいと思われます!アプリケーションは4つの画像ビューをアニメーションで作成するため、アニメーションはそれぞれ30フレームあります。ヒープショット分析の場合は – 0xDE4E15B

+0

+1です。 – Richard

関連する問題