4

最近、メモリ不足の例外が原因でアプリがアプリストアから拒否されました。アプリはメモリをリークしませんが、そのベースメモリフットプリントが高すぎるようです。Appleから送信されたクラッシュログによると、メモリ内で約14000ページを使用していました(主に巨大なテクスチャが原因です)。しかし、2つの奇妙なことがありました:

  1. 送信する前に5つのデバイスで厳密にテストしましたが、いずれのデバイスでもこのクラッシュは発生しませんでした。
  2. 拒否後にテクスチャを最適化し、元のサイズの約半分にしました(テクスチャメモリ消費量)。

Appleと同じクラッシュを再現できない限り、アプリが現在何ページを使用しているかを知る方法はありません(これは不可能でした)。アプリのメモリフットプリントを確認して、アプリが十分に最適化されていることを確認できる別の方法はありますか。

インストゥルメントを試しましたが、XCodeを実行しようとするとアプリがクラッシュします(XCodeに問題があるはずです)。しかし、iPhone/iPodで直接実行すると完全に機能します。iPhoneで私のアプリのメモリフットプリントを見つけるのに役立つものがあれば(Windowsのタスクマネージャーに類似したものがある場合)、いただければ幸いです。

ありがとう

編集:

  1. XCodeからアプリを起動すると、コンソールに次のエラーが表示されます。「リモートプログラムの起動中にエラーが発生しました:プロセス553のタスクを取得できませんでした。」

  2. Activity Monitorを使用してアプリを起動すると、次のエラーが発生します:「ターゲットが終了するのが早すぎてデータを収集できません」

EDIT2:

配布プロファイルの代わりに開発プロファイルを使用することで、ActivityMonitorでアプリを実行できました。しかし、現在、Activity Monitorにはいくつかのセクションがあります-使用される物理メモリ、実メモリ、仮想メモリ。これらのどれを私は考えますか。要約すると、これらのどれがiPhoneに低メモリ例外をスローさせるのかを知る必要があります。

4

2 に答える 2

4

XCode->実行->パフォーマンスツールで実行->アクティビティモニター。

デバイスが接続されている場合、ActivityMonitorはiPhone/iTouchで実行されます。

于 2010-01-09T09:45:17.590 に答える
2

私はあなたが間違った角度からこれに来ていると思います。XCodeを使用せずにメモリフットプリントを見つける方法を尋ねています。あなたが尋ねるべき質問は、なぜXCodeを使用できないのかということだと思います。おそらくそれはあなたが最初にアプリケーションを開発するために使用したものですか?

XCodeがないと、ほとんど目が見えなくなります。テクスチャのサイズを半分にしたとおっしゃっていますが、どうやってわかりますか?アプリがメモリ不足の警告を受け取ったときに、余分なメモリを解放しますか?(applicationDidReceiveMemoryWarning:

まず、XCodeからアプリを実行したときのクラッシュログを確認しましたか?XCodeのオーガナイザーでそれらを見ることができるはずです。

XCodeでアプリがクラッシュするのを防ぐ単一の解決策があるかどうかはわかりません。通常、iPhoneでデバッグが許可されない場合は、xCodeと受話器を再起動するだけで、再び機能し始めます。XCodeを再起動すると役立つ場合があります。また、XCodeとiPhoneSDKの両方を再インストールしてみます。

于 2010-01-09T15:25:01.597 に答える