だから、私はJavaを始めたばかりで、このWebサイトでは、オペレーティングシステムがアプリケーションにとって大きなメインメモリの未使用のセクションを見つけようとしていると書かれています。十分なスペースがない場合はどうなりますか?
3 に答える
十分なメモリがない場合の動作は、オペレーティング システムによって異なります。あまり洗練されていない一部のオペレーティング システムでは、一部のアプリケーションを手動で閉じてメモリを解放するよう求めるエラーが表示されます。他のオペレーティング システムは、実行中のアプリケーションの 1 つをディスクに「スワップ アウト」して、メイン メモリのスペースを解放しようとします。他のすべてをスワップアウトした後でもアプリケーションに適合する十分な物理メモリがない場合、これらのオペレーティング システムはエラーを表示します。
上記は、アプリケーションを実行するためのメモリへの初期ロードにのみ適用されることに注意してください。ほとんどのアプリケーションは、実行時にデータを保存するために追加のメモリを要求します。一部のアプリケーションは、動的ライブラリを介して追加の実行可能コードのロードを要求することもあります。これらの操作を完了するのに十分なメモリが OS にない場合、OS はアプリケーションにエラーを返します。アプリケーションは、不要になったリソースの一部を解放するか、可能性がない場合は正常に終了することで状況を処理する必要があります。追加のメモリを取得せずに続行します。
十分なメモリがない場合、プログラムは実行されません (コンピュータがショップに行ってメモリを購入できる場合を除きます。私の場合はできません)。
とはいえ、すべてのメモリが RAM であるとは限りません。OS は仮想メモリをサポートしているため、使用可能なメモリの一部は実際にはハード ディスク スワップ ファイルです。また、Java と一部の Windows (少なくとも XP) では、大量のメモリが必要な場合に問題が発生します。これは、メモリが十分にある場合でもパーティション分割されていることが多く、JVM が単一の「ブロック」に配置する必要があるためです。しかし、問題が発生するためには、多くのことが必要です。
JVM を実行するのに十分なメモリがシステムにあるが、Java プログラムを実行するのに十分でない場合、OutOfMemoryException が発生する可能性があります。