2016-07-22 16 views
1

私のアプリにリークがあるかどうかをテストするために、機器のリークツールを使いました。リークがあることがわかりました。私はリークを修正の専門家ではないよ、私は思っていた私は、リークを持ってiOSでメモリがリークする

  1. 、と私はそれを修正するために何をすべきか
  2. 場合。

enter image description here

+1

私は慎重に返信します*「多分あなたはそうかもしれません。漏れ検出器*は間違っている可能性があります。本当に漏れがあった場合、その表示は多くのページにわたって続きます。さらに、時間が経つにつれて、リストは目に見えて長くなります*あなたがそれを見るたびに同じアドレスがリストに残ります。これがあなたが(はっきりと)見ているものでないならば、あなたがそれを見たときにあなたはそれをはっきりと知るでしょう。それは偽陽性かもしれません。 –

答えて

4

あなたはリークを持っているように見えるが、それは控えめに見えます。メモリアドレスの横にある小さな矢印をクリックすると、そのメモリが割り当てられた場所をドリルインして見ることができる画面が表示されます。これは、割り当て解除されなかった理由を突き止める最初のステップです。 (私は非mallocオブジェクトを開始しますが、より頻繁にコードに直接マッピングされるため、診断が簡単です)。

しかし、Mike Robinson氏が述べたように、偽陽性のような緩やかなリークが見られることがあります。たとえそれが偽陽性ではないとしても、あなた自身のコードではなく、OS自体から来ている可能性があります。そのため、実際に漏れが発生したと思われるアプリの部分を繰り返し実行するなど、実際にアプリに重点を置いてリークがどの程度速く起こっているかを確認する作業を行うことがあります。あなたのリークが1キロバイト程度以下になるかもしれないように見えますが、成長し続けることはありません。気にしないことを選ぶかもしれません。 (または、コードに何も含まれていないことを少なくとも1度は思い出させてください。)

個人的には、全体的なメモリ使用量の大幅な増加よりも、これらの緩やかなリークはあまり心配していません。イメージの適切なキャッシングに過ぎないかもしれないし、放棄されたメモリの兆候かもしれない(漏れたツールはあなたに表示されない)。私はメモリの警告をシミュレートしようとし、そのメモリのどれが回復されているかを見てみましょう。また、タイムラインをドラッグして割り当てビューに移動すると、そのメモリ消費の原因を調べることができます。 「漏れ」ツールによって報告された適度な漏れとは無関係に、深刻な記憶上の問題がないことを確認したい場合があります。すべてのメモリ問題が「リーク」に表示されるわけではありません。「割り当て」の増加は問題を示す可能性もあり、メモリ使用量が一定のレベルまで低下していることを少しも心配しています。

アップルは、割り当てられたグラフの例を共有しています。赤色の「無駄な」メモリがあることに注意してください。ウォームアップ部分はそれほど重要ではなく、また(限り、それはあまりにも高くないよう)の中間レベルであるが、定常状態レベルの成長はより深刻なメモリの問題の指標である:

enter image description here

あなたのケースでは、私はアプリが安定した状態にまったく戻ってきていないと思っています。それが私が少し気になる理由です。しかし、私はどのくらいあなたがアプリを実行したか、またはあなたがその安定した状態に戻る機会を与えたかどうかはわかりません。

WWDC 2013 (多少の日付が記されていますが、まだ関連性があります)を見ると、メモリの問題を診断して解決するためのツールとテクニックが用意されています。それは上記のチャートがどこから来たかをより詳細に記述したものです。 PDFプレゼンテーションは素晴らしいですが、ビデオははるかに優れています。これには、Instrumentsを使用するための実用的なデモンストレーションも含まれています。 WWDC 2012 iOS App Performance: Memoryも良いです。 (ビデオをストリーミングするのに問題があるように見えますが、まだダウンロードできるように見えます)

+0

偉大な答えロブ! –

関連する問題