この質問を提起するための一般的な方法を長い間考えた後(そしてそれを見つけることができませんでした)、具体的な例としてそれを尋ねるつもりです:
プロセスに割り当てることができる1 Gbのメモリを持つLinuxマシンがあるとします(物理およびスワップの合計1 Gb)。
標準の Oracle Hotspot JVM バージョン 7 がマシンにインストールされています。ある時点で、その 1 Gb のうち 400 Mb だけが空いているような十分な数のプログラムが実行されている場合、その時点で次の JVM フラグを使用して Java プログラムを開始します。
java -Xms256m -Xmx512m -jar myJar.jar
何が起こる?:
A. JVM は、512 Mb のメモリをすべて割り当てようとして失敗するため、すぐに開始できませんか?
JVM が起動した場合:
ある時点で、実行中の Java プロセスが 400 Mb を超えるメモリを必要とする場合 (現在の Java プロセスが既に使用しているもの以外に、空きメモリがまだ 400 Mb しかない場合)、何が起こるか:
B. Java プロセスは OutOfMemroyError で失敗しますか?
C. 他の (標準) エラーで失敗しますか?
D. 未定義の動作ですか?