2012-02-27 8 views
3

私たちは、主のiPad 2とiPhone 4Sをターゲットにして、メモリ集約型の3Dアプリを持っているが、それは同様にiPod touchの第4世代とiPhone 3GSで動作します。私たちは、iPod Touch 4Gのメモリ占有量が小さくなり、網膜ディスプレイと組み合わせることで、このプラットフォームがメモリ不足エラーの影響を受けやすくなることを発見しました。 iOS5はまた、利用可能なメモリをいくらか低下させたようです。最大(実用的)メモリ使用量、iOSの5

使用しているプラ​​ットフォームに基づいて3Dモデルの解像度を下げることは比較的簡単ですが、ロードする前にその解像度を設定する必要があります。 O/S。

試行錯誤に基づいてメモリの使用状況を調整しましたが、長時間(たとえば、数ヶ月)で再起動されなかったデバイスのメモリ使用量は、最近再起動しました。 (あなたはすべての実行中のアプリを殺す場合でも。)私はどのような他のiOSアプリの開発者は、iPod touchの4Gのアプリのための実践的なメモリ制限として使用思ったんだけど

+0

私は便利な答えがあるかわかりません。それは、ユーザーがあなたのアプリを使用する前または使用している間に、デバイスで何をしているのか、使用しているのかに大きく依存しています。それを一般化する方法がわからない。 – onnoweb

+0

私はむしろ、私たちのアプリが大体決して墜落しないと思っていました。プラットフォーム上で多くの経験を積んだ他のアプリ開発者が、「iPod touchでXメグ以上のものを使用しないでください」ということを知ったかもしれません。しかし、私はその答えを見つけることができませんでした。 (70Megを示唆する1つのSOの質問がありましたが、コメント者は実際の洞察を提供せずに質問を返信していたと思います) –

+0

私はこの古い質問をちょうど思い出していました。更新。すべてのケースでメモリ問題を解決するための鍵は、圧縮テクスチャの使用に切り替えることでした。文字通り、欠点はありません。ランタイム時のメモリ消費量が少なく、レンダリング時間が大幅に短縮されます。 –

答えて

3

誰もが心の中で提供され、親指の私の個人的な一般的なルールは、賢明な天候であなたは以下の周りに持っていることを期待することができることとなっていることを、すべての警告を維持しながら:

  • 512MBのデバイス - > 200メガバイト使用可能( iPhone 4-4S、アプリ2)
  • 256MBのデバイス - > 100メガバイト使用可能な(iPhone 3GS、アプリ、iPod Touch 3G-4G)
  • 128MBのデバイス - >使用可能な50メガバイト(iPhone 3G、iPod Touchの1G-2G)

また、メモリ使用量に柔軟に対応できるようにすることなく、気まぐれな天気に厳密に耐えたい場合は、それらの数を半分にすることもできます。しかし、状態が悲惨になったときに船外に何かを投げることができない場合、それはかなり難しいでしょう。これは、その時点でどのくらいの信頼性を捨てようとしているか、パフォーマンスのスライディングスケールに似ています。環境予測可能性の面では

は、iOSのは、多くのOS用のドリル軍曹の追加ボーナスで、より良く、より悪いのための専用マシン、よりPCのようなものです。

1

OSKitとOpenGLでOSがあなたに代わって行うすべての外部割り当てのため、実際の数値を与えるのは難しいです。私は自分の割り当てを約30MBに抑えようとしています。私のトップエンドは50MBです。私は90MBもの高さにプッシュしましたが、そのレベルでは大量に投棄されてしまったので、すべてのメモリを使用するタスクが非常に簡単でない限り、おそらく悪い考えです。

あなたはあなたの現在の問題を回避ハックする必要がある場合は、あなただけのアップフロント問題のデバイスを検出し、起動時に、あなたのグラフィックスエンジンの解像度を下に回すことができます。正確なデバイス情報を得ることができますし、ディスプレイのスケーリング(網膜)とプロセッサコアの数とRAMの量を組み合わせて使用​​する品質レベルを判断できます。

私はRAMにロードするデータの代わりにマップされたファイルを使用して、あなたが任意の大規模なデータの割り当てを持っている場合に試してみるとよいでしょうによって私のメモリ使用量を削減する大きな成功を収めてきました。

また、彼らは大量のメモリを消費し、一見ランダムな時間に投棄されることにつながる可能性としてのUIKitから漏れビュー/コントロールに気を付けます。いくつかのビューコントローラから子ビューをリークしたコードがありました。最終的には、私のアプリのメモリ使用量が問題を直接反映していないものの、それらの漏れは私のアプリを噛んでしまうでしょう。

2

最近、私はこの素晴らしいツールを見つけて、どのiOSデバイスの最大メモリ容量を見つけましたか?また、どのメモリレベルでLow Memory警告を受け取ったかを確認することもできます。ここ

はリンクです:https://github.com/Split82/iOSMemoryBudgetTest