web-dev-qa-db-ja.com

コンピューターのRAMが不足するとどうなりますか?

少し前に、好奇心から、Javaプログラムを書いて、非常に速く大量のメモリを消費しました(BufferedImagesをループの配列リストに追加します)。

Windowsシステムモニターを開いたままにし、RAMの使用状況を確認しました。

プログラムを開始したとき、RAMの使用率は非常に速くなり、6GBのRAMの約100%に達したため、コンピューターが非常に遅くなりました。約1分後、なんとか終了しましたプログラムとコンピューターの速度がゆっくりと回復しました。私の注意を引いたのは、メモリ使用量が最初にゆっくりと低下し、その後、ほぼ0MBに急に低下した後、約2〜2.5GBのアイドル状態に戻ったことです。

システムモニターでのRAMの使用法のスクリーンショットを撮りました。

enter image description here

コンピューターがメモリ不足になったときに何が起こるのか、プログラム終了直後ではなく約60秒後にアイドル状態に戻らない理由を誰かが説明できるかどうか疑問に思っていましたか?また、なぜ使用量がアイドル状態の使用量ではなく、何もない状態になるのはなぜですか?

9
user1291510

メインメモリの上限に達し始めると、オペレーティングシステムはメモリをディスクにスワップアウトして、より多くのものを格納できるようにします(これは paging と呼ばれます)。これは、SSDを使用している場合でも、ディスクドライブがRAMよりもwaaaay遅いため、コンピューターが本当に遅くなっている理由です。メインメモリが残っていなくてもプログラムが続行できる理由。

多くの場合、アイドル状態のメモリが最初にスワップアウトされるので、アクティブなプログラムはRAMにできるだけ多く持つことができます。これが、メモリ使用量が通常のアイドル状態を下回る理由です。システムはメモリページを再度スワップし始め、アイドル状態のメモリは最終的にRAM)でいっぱいになります。

15
Emil Vikström