0

Instruments でアプリを「プロファイリング」すると、いくつかのメモリ リークが見つかりました。漏れの中には、明らかで簡単に修正できるものもありますが、そうでないものもあります。Instruments に表示されるリークログのいくつかは、本当に気になります。例えば: ここに画像の説明を入力

コードのどの行がこれらの「見知らぬ人」を舞台裏で呼んでいるのかさえわかりません。これらのリークを修正するにはどうすればよいですか? 私のコードからのリークですか?フレームワークから?それともただの虚偽報告?

次に、私の質問は次のとおりです。

A: メモリ リークのバグをすべて修正することは可能ですか? それらのいくつかは、対処するのが本当に難しいです。そして、それがコードのバグなのかフレームワークのバグなのかさえわかりません。

B: すべてのメモリ リークを修正する必要がありますか? 数バイトのリークは何も影響しない可能性があります。そして、それを修正するための努力は、得られる以上の費用がかかる場合があります。

4

3 に答える 3

4

はい、可能です。そうすべきです。

特にアプリがバックグラウンドで実行されている場合、リークは長期的には良くありません。リークがサードパーティのライブラリにある場合は、メーカーに修正するよう伝えてください。または、コードを持っている場合は、自分で修正してください。独自のコードでのリークは簡単に修正できるので、修正してください。

于 2012-06-21T08:14:23.387 に答える
4

A: メモリ リークのバグをすべて修正することは可能ですか? それらのいくつかは、対処するのが本当に難しいです。そして、それがコードのバグなのかフレームワークのバグなのかさえわかりません。

はい、可能ですが、プロファイリングから取得した結果が必ずしもリークにつながるとは限らないことに注意してください。それらはまだ自動リリースされていないオブジェクトである場合もあれば、あなたのものではない場合もあります。

B: すべてのメモリ リークを修正する必要がありますか? 数バイトのリークは何も影響しない可能性があります。そして、それを修正するための努力は、得られる以上の費用がかかる場合があります。

アプリケーションが拒否されないことを意味する場合、それは必要ありません。見つけられないように見えるいくつかのバイトに過労したりストレスを感じたりしないでください。あちこちで失われたいくつかのバイトを探しに行ったり、検索したりしないでください。アプリケーションが実際にリークしていることに気付いた場合にのみ、リークを探します。

于 2012-06-21T08:15:06.897 に答える
0

アプリケーションが長時間実行されている場合(サーバーと見なしてください)、頻繁に2バイトのリークが発生し続けます。ある時点で、ヒープは無限のリークでいっぱいになります。これにより、アプリケーションでmalloc障害が発生する可能性があります。したがって、メモリリークを修正することは、長時間実行されているアプリケーションにとってより重要です。また、すべてのメモリリークを修正することも可能です。

アプリケーションが短時間実行されている場合は、アプリケーションが存在すると、オペレーティングシステムによってすべてのリソースが解放され、その時点でリークされたメモリも解放されます。

于 2012-06-21T11:50:27.043 に答える