2

私は特にiOSに不慣れで、基本的な概念からはまだかなり遠いです。

iOSの本やフォーラムで、メモリ不足が原因でアプリケーションがクラッシュすることを読みましたが、なぜクラッシュするのですか?誰かが光を投げることができればそれは役に立ちます。

4

4 に答える 4

6

iOSデバイスはページングで仮想メモリを使用します。モバイルデバイスであり、拡張可能なメモリや使用可能なかなり大きなメモリ(ハードドライブなど)がないため、ページの使用可能性は、開いているアプリケーションの数、さまざまなアプリケーションによる割り当てなど、さまざまな要因によって制限されます。 、一部のオンボードアプリケーションは、サファリ、i-tunes、メッセージングなどの休止状態でも常に一部のページを使用し続けます。したがって、基本的にアプリケーションの数がアクティブになると、アプリケーションが使用できるページ数はさらに減少します。 。

そのため、アプリケーションによる割り当ての速度が他のアプリケーションによってページが解放される速度を超えている場合、アプリケーションはクラッシュします。

OSは、読み取り専用データのみをメモリから解放し、書き込み可能データは解放しません。書き込み可能データが特定のしきい値を超えると、OSはアプリケーションにメモリを解放するように要求します。メモリを解放できないと、クラッシュが発生します。

メモリ割り当てアップル

于 2013-03-16T06:49:06.753 に答える
3

実際にはクラッシュしません。通知後に十分なメモリを解放しない場合、アプリはカーネルによって終了されます。

これを透過的にするために、現在の状況に関する詳細を含むクラッシュレポートが作成されます。ユーザーには、アプリケーションが突然消えたため、アプリケーションがクラッシュしたように見えます。

于 2013-03-16T07:04:33.117 に答える
2

デバイスには多くのメモリがなく、メモリに夢中になっている場合は、問題を探しています

iOSにはARCと呼ばれる優れたメモリツールがあります。こちらの完全なドキュメントをお読みください

于 2013-03-16T06:53:42.217 に答える
0

UIImagesだけで構成されるテーブルビューをロードするときに、以前は自分のアプリでやけどを負ったことがあります。これは、テーブル内の小さなサムネイルのように見えますが、最終的にはフル解像度(および大量のメモリ)のオブジェクトになります。

メモリを大量に消費する可能性のあるオブジェクトを操作する場合は、注意が必要です。

ただし、Appleは、アプリのメモリパフォーマンスのプロファイルに使用できるXcodeInstrumentsなどのツールを提供しています。

于 2013-03-16T06:58:18.260 に答える