5

私は問題に頭を悩ませようとしています(この質問では避けられました)。コンテキストは次のとおりです: cocos2d バージョン 2.0 で開発されたターン制ゲーム、obj-c、ARC なし、現在、iOS 7 の問題 (iOS7 ではなく私のもの) を説明するために AppStore の更新を準備しています。

私自身のインストルメンテーションは、Instruments と同様に、リークも、放棄されたメモリも、何も表示されません...フラットです。これは、iOS 4、5、6.1 でも同様でした。ただし、送信前のテストの要約では、デバイスでプロファイリングすると、ゲームがアイドル状態で、つまりユーザーの操作がまったくない状態で、2 分ごとに 1Mb の増加が見られます (下の写真を参照)。

ここに画像の説明を入力

私が見ることができる唯一のものは、この IOAccelResource カテゴリが世代間キャプチャの間で異常に実行されていることです。

  1. それが何であるかについて何か提案はありますか?

  2. 私は IOAccelResource について多くを見つけることができません...あなたの誰かが私を正しい読書方向に向けることができますか? これが実際に cocos2d に関連している場合は、そこを掘り下げてもかまいませんが、どこから調べればよいかわかりません。

  3. また、ビルドをできるだけ「リリースに近い」状態で実行し、時間の経過とともにメモリ フットプリントを測定できるようにしたいと考えています。プロセスサイズの測定方法を教えてください。

    ティア。

4

5 に答える 5

2

私が知る限り、これは偽物です (楽器のバグの可能性があります)。同じコード ベースの「リリース」バージョンを使用している場合 (つまり、デバッグなし)、プロセス サイズを監視している場合 (つまり、実行中のプロセスにデバッグ プロセスが接続されていない場合)、メモリ クリープは発生しません。

于 2013-10-24T18:08:00.580 に答える
1

推測: IOAccelResource は UIAccelerometer で使用できます。確かに、加速度計の I/O のようなものに聞こえます。

UIAccelerometer は iOS 7 で廃止されましたが、cocos2d ではまだ使用されているため、Apple が把握または気にかけなかった問題がある可能性があります。テストのために、cocos2d から UIAccelerometer 参照を削除して、これがなくなるかどうかを確認してください。リリース ビルドは Instruments のメモリ監視に影響を与えるべきではなく、アーカイブ ビルドはコードの観点からは単なるリリース ビルドです。

于 2013-10-07T21:00:46.090 に答える
1

Enable Zombie Objectsオプション onは、このEdit Scheme > Run > Diagnostics動作を引き起こす可能性があります。有効にしている場合は、必ず無効にしてください。

于 2014-08-15T19:54:50.337 に答える
1

Ricardo は答えの半分を持っています: ゾンビ オブジェクトはこれの一部です。クリープを取得するには、ゾンビを有効にし、プロセスを添付する必要があります。

要約すれば :

  • ゾンビもメモリ クリープもありません。
  • ゾンビあり、デバッグ プロセスなし、メモリ クリープなし。
  • ゾンビ、デバッグ プロセスの接続、メモリ クリープ。
于 2014-08-15T21:11:59.390 に答える