1

楽器で遊んでいます。そして、メモリリークを記録/プロファイリングしたところ、メモリリークはほとんどありませんでしたが、アプリを開いたばかりでも、圧倒的な量の割り当てが継続しています。これは、アプリを 10 秒未満使用した後のスクリーンショットです。

10秒後???

アプリを使い続けると、どんどん増えていきます。

最も奇妙な部分は、ほとんどの割り当てが、私が知らないクラスから来ていることです。

財団

高度

lbdispatch.dylib

しかし、それは、JSon と XML 用にインポートして追加した SBJson および他のクラスからのものである可能性があります。

しかし、これは多くのメモリ割り当てですか? やりすぎはダメですか???

4

2 に答える 2

3

はい、いいえ、それはあなたが何をしているかによって異なります。たとえば、多くの文字列を割り当てる場合、1000 個の文字列を割り当てるとしましょう。これらの割り当て自体は悪くありませんが、本当に必要な場合は、アプリケーションのロジック ビューに依存します。すべての文字列を一度に取得し、アプリケーションのすべてのステップでそれらを割り当てて有効にする必要がある場合、何もする必要はありません。アプリケーションは大量のメモリを必要とするだけです。

ただし一方で、アプリケーションを論理的に構造化する別の方法を見つけることもできます。たとえば、1000 個の文字列をそれぞれ必要なときにのみ割り当てることができます。

非常に抽象的な答えは、アプリが大量のメモリを必要とし、遅延読み込みやキャッシュなどの手法を使用する方法がない場合、他に解決策がないということです。

ただし、遅延読み込み、キャッシュ、割り当てプールを使用するようにアプリケーションを再構築できる場合は、それがより良いでしょう

注意: アプリケーションにメモリ警告コールバックを正しく実装することで、iOS SDK を使用して、警告を受け取るたびに、現在必要のないリソースを解放し始めることができます。

于 2012-06-21T08:29:30.670 に答える
1

また、ゾンビはいますか?ゾンビはデフォルトで割り当てを実際に削除しないため、メモリの割り当てが解除されることはありません。常にゾンビをオフにしてメモリ リークをテストします。

于 2012-06-21T13:09:23.063 に答える