2017-02-28 5 views
-1

Xamarin.iOSを使用してアプリケーションを開発しています。その記憶は非常に非効率的に扱われ、漏れはほとんど不可避であるというのは一般的な知識です。だから私はできるだけ慎重にしようとしているし、愚かなことをしないようにしようとしているのです。循環依存性がなく、イベントリスナーが削除されずに残っていません。私はInstrumentsを使ってアプリケーションで使用されているリソースを監視しています。私は次のアプリデザインを持っています: といくつかのラベル/ボタンを持っているUIViewControllerAがあります。 3つのテーブルエントリのいずれかを押すと、それぞれUIViewControllerBUIViewControllerCUIViewControllerDにナビゲートされます。また、いくつかのHTTPリクエストを作成します。各コントローラーには、ラベル、グラフィックス、表、スクロールビュー、ボタンなどもあり、HTTP要求も行います。私はUIViewControllerAからそれらの3つに、ランダムに戻ることによって、私のアプリをテストしています。一方、新しいUIViewControllerの登場ごとに、機器のリソースモニタの列が1〜2MB増加しています。決して落ちない。私は本当に知っていないので、メモリがどう動くべきか、そのトピックに関する情報は事実上ないので、これがiOSアプリケーションの通常の動作であると考えられるかどうかはわかりません。それは大丈夫ですか?私の質問は非常に曖昧であることを認識していますが、私はそれらの "兆候"に注意を払う必要があるかどうかを知る必要があります。iOSアプリのメモリ使用の正常な動作とは何でしょうか?

答えて

1

コードを深く知ることなく、正確に何をしているのか、私はそれが正常な動作ではないと言います。 ControllerA、Bの間を切り替えてAに戻ると、いくらかのメモリを解放する必要があります。良いメモリ使用量は、上下の鋸刃のように見えるはずです。

一般的な問題は、GCがメモリをただちに解放できないことです。イメージ処理のようなメモリが重い操作の場合は、GC.Collect()を使用することを検討できますが、コレクションを強制してメモリを解放する最後のオプションにする必要があります。

Xamarin Profilerは、私のアプリケーションのプロファイリングにも大いに使用しているInstruments以外にも、何がまだ生きているのかをより深く理解し、参考にしています。何らかの理由でXamarin Profilerを使用できない場合は、Heap Shotというビルドツールを使用してください。

関連する問題