最大ヒープ サイズと最大 permgen スペースをテストするには、Gilliが Windows の Java プロセスあたりの最大メモリ量で提案した返信に従って? 、システムを出力するだけのmainメソッドを持つ単純なJavaクラスを作成しました
以下のパラメーターを使用してコンソールからクラスを実行すると、正常に実行されましたが、2048 で、エラー could not reserve が発生しました オブジェクト ヒープに十分なスペースを予約できませんでした。これは、システムの最大ヒープ サイズが 1536 から 2048 の間で許容されることを意味します。
java -Xms1536m -Xmx1536m TestJVMParam
64 ビット Java を実行している場合、オペレーティング システムが Java プロセスに提供するメモリ空間は非常に大きくなります。したがって、Java ヒープとネイティブ ヒープの間のメモリ リソースの競合により、Java ヒープの最大サイズに制限が課されていないと見なすことができます。
だから私は 8 GB のメモリを持っているので、なぜ VM はオブジェクト ヒープに十分なスペースを予約できなかったのでしょうか?
2 番目に必要なのは、システムの最大 permgen サイズを見つけることです。だから私は以下のパラメータで同じプログラムを実行しました
java -Xms1536m -Xmx1536m -XX:PermSize=128m -XX:MaxPermSize=128m TestJVMParam
しかし、再び、オブジェクトヒープに十分なスペースを予約できませんでしたと表示されます。Windows7 64ビットOSで8GB RAMを持っているので、どうすればそれが可能ですか。そして、permgen に 128m も許可しないのですか? 私はここで何かが欠けていると確信していますが、それを理解することはできませんか?