アプリケーションは閉じられると RAM から削除されますか?

アプリケーションは閉じられると RAM から削除されますか?

プログラムを開いて、閉じてからもう一度開くと、2 回目ははるかに速く開くようです。

これは、2 回目にすでに RAM 内にあるためでしょうか?

言い換えると、プログラムが終了すると、そのメモリ領域は未使用としてマークされると思います。古いメモリ領域が使用される前にそのプログラムを再度開いた場合、プログラム全体をディスクから再ロードする必要がありますか?

答え1

一般的に、アプリケーションが閉じたり終了したりすると、占有していたストレージは即座に解放され、アプリケーションを再起動すると、ディスクから新たに「新しい」ストレージにロードされます。

これに対する最大の例外は、一部の「スマートフォン」です。このスマートフォンでは、アプリケーションを「終了」しても、実際にはすぐに終了せず、近い将来に再起動される可能性を前提として、一定期間「バックグラウンド」にされるだけです。ただし、一定期間アプリケーションを使用しない場合は、最終的に OS によって終了され、ストレージが再利用されます。(私の知る限り、この方式は、通常の Microsoft または Apple のコンピューターでは使用されず、電話でのみ使用されます。)

もう 1 つの例外は、もう少し技術的なものですが、プログラムが終了してストレージが解放されたとしても、プログラムのディスク イメージ (または少なくともその一部) がディスクの「キャッシュ」にまだ存在し、2 回目は 1 回目よりも簡単にアクセスできる場合があります。これが、2 回目の起動がより高速であると感じられる原因である可能性があります。

ただし、起動が速い理由は他にもあります。アプリケーションを終了してすぐに再起動すると、プログラムにぴったり合う便利な「穴」がストレージ内にできます。後で他のものを実行した後にアプリケーションを起動すると、OS は利用可能なストレージを探すのに手間取るため、多くの場合、RAM 内の他のデータを「ページ アウト」する必要があり、時間のかかるプロセスになります。

答え2

プログラムが開いているときも閉じているときもメモリは使われたり使われなかったりすることはありません。使用済み有用な情報が含まれているかどうか。プログラムの実行中とプログラムの実行が終了した後の両方で有用な情報が含まれています。

実際、ほとんどのオペレーティング システムでは、プログラムが実行中であるかどうかさえ考慮しません。プログラムが実行中であるという理由だけで、アクセスされていないものをメモリに保持する必要があるのでしょうか。また、その瞬間に実行中のプログラムが使用していないという理由だけで、メモリから何かを破棄する必要があるのでしょうか。

オペレーティング システムはデータへのアクセスによって動作します。もちろん、アクセスできないデータを保持するメモリは空きメモリとみなされます。

関連情報