0

これはかなり奇妙な質問だと思いますが、これまでメモリ割り当てを実際に処理する必要がなかったので、メモリを使いすぎたり、割り当てを解除するのを忘れたりすることに本当に悩まされています。非常に便利なメモリ リーク ツールを見つけました (そして、少なくともこれまでのところ、その方法で何も失われていないことを非常に誇りに思っています)。アプリケーション実行時の任意の時点で。ただし、どのくらいのメモリを使用する必要があるかはよくわかりません。

私の iPod touch には十分な 256M があると思いますが、確かではありませんが、どれだけがシステム プロセスによって使用されているか、メモリ不足の問題が発生する前にどれだけ安全に使用できるかはわかりません。現在、私のプログラムは約 4 MB を使用しています。これは、実行していることに対してかなり高いように見えますが、少なくともその一部は、停止できないシステム プロセスであるか、大きなグラフィック背景のようなメンテナンスの手間がかかるものであると思います。使用しています。

要するに、アプリケーションが常に使用するメモリの最大量に関して、適切なベンチマークの数値を誰か教えてくれませんか? iPhone 4 と iPad の数値も、大幅に異なる場合はよいでしょう。

-灰

4

2 に答える 2

1

難しい答えはありません。注意すべき点がいくつかあります。

1) 時間の経過とともにアプリがますます多くのメモリを使用する場合、ほとんどの場合適切にメモリを解放するアプリよりもはるかに早く強制終了されますが、いくつかの間違いがあります。アプリケーションを強制終了するための (一見) 複雑な式を持つウォッチドッグ プロセスがあること、およびさまざまなアプリがさまざまな理由でさまざまなメモリ使用レベルで強制終了される可能性があることを忘れないでください。

2) iPhone4 は以前の携帯電話よりも多くのメモリを搭載していますが、ユーザーがマルチタスクを行っているため、メモリを使用したまま街に出るのは本当に失礼です。ここでのマルチタスクでは、メモリ使用量を低く抑えることが何よりも重要です (これは、独自のアプリがバックグラウンドにある場合に役立ちます。メモリを使用するほど、アプリが強制終了される可能性が高くなります)。

3) メモリの警告を真剣に扱い、可能な限りすべてをダンプします。これにより、アプリの実行時間が長くなり、バックグラウンドでの稼働時間が長くなります。

于 2010-08-18T20:46:59.840 に答える
0

過去 2 日間、最新のアプリのメモリ フットプリントを分析していて、興味深い事実を発見しました。

アプリケーションがメモリ警告を受け取ると、現在表示されていないビューの割り当てを解除します。これを考慮に入れていなかったため、アプリケーションがクラッシュします。最初は、自動解放されたオブジェクトの割り当てを解除していると思っていましたが、これは正しくありません。

電話を再起動すると、警告なしで最大 8 MB のヒープを処理できます。iOS4では、バックグラウンドで実行するものの量にも依存すると思います。iPhone4にiOS 4.0.1があります。

iPad/iPhone 3GS は 256MB、iPhone4 は 512MB ですが、プロセスですべて使用できるわけではありません。初期の iOS 3.0 で、私のアプリの 1 つが 32 MB で OS によって終了されたことを覚えています。

于 2010-08-18T20:13:48.703 に答える