多くのメモリーを必要とするJavaプロセスを開始しようとしました。何らかの理由で、19G以上のRAMをプロセスに指定しても機能しません。私が23Gの空きメモリを持っていることを示すフリーとトップは、このエラーがなぜ発生するのか不思議です。システムには十分なメモリーがありますが、「オブジェクト・ヒープに十分なスペースを確保できませんでした」
total used free shared buffers cached
Mem: 24158 1047 23111 0 16 356
-/+ buffers/cache: 673 23485
Swap: 2204 0 2204
これらのJVMオプションを持つプロセスの開始:それが動作Xmxのように私は19Gを指定した場合、しかし、
java version "1.7.0_02"
Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
Java HotSpot(TM) 64-Bit Server VM (build 22.0-b10, mixed mode)
:
-XX:+UseConcMarkSweepGC -server -d64 -Xms4g -Xmx22g
バージョンを。
だから、-XX: MaxPermSizeはXmxに含まれていませんか? – user3111525
いいえ、それはあなたの総メモリ消費量に対して別々にカウントされます! '-Xms'と' -Xmx'はヒープのサイズのみを制御します。詳細については、[このディスカッション](http://stackoverflow.com/questions/4223809/is-java-permgen-space-part-of-the-total-vm-memory)を参照してください。 – r3nj1
@frankmoss - さらにヒープにはないものがあります。スレッドスタック、JVMイメージのメモリ、メモリマップファイルとダイレクトバッファのメモリ、 'malloc'呼び出しを行うネイティブコードによって割り当てられたメモリなどがあります。 –