携帯電話がスムーズなマルチタスク処理を行うために必要な RAM の理想的な量については、かなり議論の余地があります。 Apple は iPhone のサイズを小さくすることでなんとかしており、Android ソリューションよりも使いやすいことがよくあります。また、iPhone には RAM メモリ管理のような機能はありませんが、Android にはこのための専用の機能があります。
たとえば、Samsung Galaxy スマートフォンで次の操作を行う場合 ナスタベニ -> デバイスケアここには、空き容量と占有容量に関する情報を示す RAM インジケーターが表示されます。メニューをクリックすると、各アプリケーションが使用しているメモリ量が表示され、ここでメモリをクリアするオプションもあります。 RAM Plus 機能もここにあります。その意味は、内部ストレージから一定の GB を切り取って、仮想メモリとして使用することです。 iOS でこのようなことが想像できますか?
スマートフォンはRAMに依存しています。オペレーティング システムを保存したり、アプリケーションを起動したり、一部のデータをキャッシュやバッファ メモリに保存したりするのに役立ちます。したがって、アプリケーションをバックグラウンドに落としてしばらくしてから再度開いた場合でも、アプリケーションがスムーズに実行できるように、RAM を編成および管理する必要があります。
スウィフト vs.ジャワ
ただし、新しいアプリケーションを開始する場合は、アプリケーションをロードして実行するためのメモリの空き領域が必要です。そうでない場合は、その場所を空けなければなりません。したがって、システムは、すでに開始されているアプリケーションなど、実行中の一部のプロセスを強制的に終了します。ただし、両方のシステム、つまり Android と iOS では、RAM の動作が異なります。
iOS オペレーティング システムは Swift で書かれており、iPhone は実際には、閉じたアプリから使用済みメモリをシステムにリサイクルする必要がありません。これは iOS の構築方法によるもので、iOS は iPhone 上でのみ実行されるため、Apple が完全に制御できるからです。対照的に、Android は Java で書かれており、多くのデバイスで使用されているため、より汎用性が高い必要があります。アプリケーションが終了すると、アプリケーションが使用していたスペースがオペレーティング システムに返されます。
ネイティブコードとJVM
開発者は iOS アプリを作成するとき、それを iPhone のプロセッサ上で実行できるコードに直接コンパイルします。このコードは、実行に解釈や仮想環境を必要としないため、ネイティブ コードと呼ばれます。一方、Android は異なります。 Java コードがコンパイルされると、プロセッサに依存しない Java バイトコード中間コードに変換されます。したがって、異なるメーカーの異なるプロセッサ上で実行できます。これには、クロスプラットフォーム互換性という点で大きな利点があります。
もちろん、欠点もあります。オペレーティング システムとプロセッサの組み合わせごとに、Java 仮想マシン (JVM) と呼ばれる環境が必要です。ただし、ネイティブ コードは JVM 経由で実行されるコードよりもパフォーマンスが高いため、JVM を使用すると、アプリケーションが使用する RAM の量が増えるだけです。そのため、iOS アプリのメモリ使用量は平均 40% と少なくなります。これが、Apple が Android デバイスほど多くの RAM を iPhone に搭載する必要がない理由でもあります。
私は専門家というわけではありませんが、Android を 15 年間使用し、現在 iPhone 2 mini を使い始めて 13 か月のユーザーの観点から説明します。 8GB メモリを搭載した Android (最近では Samsung S21、Flip3) では、通常、一定時間後に以前に起動したアプリケーションに戻り、まだ RAM にロードされていたため、最初からやり直すことはなく、スムーズに再開できました。やめた。一方、メモリが 8 GB であっても、メモリがいっぱいになるとシステムの速度が低下し始めたため、週に XNUMX 回すべてのアプリケーションを「ショットダウン」して RAM をクリアしました。 iPhone の速度が遅くなるという問題はありませんが、その一方で、ほぼ同じアプリケーションを使用していると、逆に、以前に起動したアプリケーションに戻ると、再び完全にロードされ、中断したところからスムーズに再開できません。
どのオプションが良いでしょうか?言うのは難しいですが… Android 上のアプリを強制終了して RAM をクリアするのは、2 回のクリックだけです。 iPhone でアプリケーション全体を再度ロードするのはそれほど時間はかからないので、あまり問題にはなりません... もちろん、iPhone の RAM を増やして、Android のようにマルチタスクを実行できるのが理想的です :-D
クソ、またバカだ。まず、Android は長い間 Java で行われてこなかったので、Kotlin はそのために使われています。ガベージコレクターはメモリを担当します。これは iOS では最も単純ですが、欠点はありますが存在します。つまり、iOS は、アプリを画面から外すとすぐにアプリを強制終了します。これにより、プロセスの kill pid を入力すると、Linux と同じようにメモリが解放されます。そのため、ブラウザを開いて前の作業に戻るまでに時間がかかります。この記事は、プログラミング知識のない iOS マニアによる X 年前の記事を逐語的に翻訳したものです。はい、もちろん、アプリケーションが行うメモリ管理は主にプログラマーの責任です。彼がそれで咳き込むと、世界ではメモリリークが発生し、X GB のメモリを搭載できても、まだ役に立たないことになります。そして、多くのアプリケーションが WebView のみである現在、これは非常にシンプルです。なぜなら、それ自体が可能なものはすべて消費するからです。記事はナンセンス、ゴミです。
Android では jvm ではなく dvm が使用されます。さらに、それをネイティブの実行可能ファイルにコンパイルします。
Java はまだ Android にあります。