2016-09-27 7 views
3

ヒープ・マックスのメモリ制限がないJVMを起動するにはどうすればよいですか?できるだけ多くのメモリを取ることができるように無制限のメモリでJVMを起動するにはどうすればよいですか?

このようなオプションがあるかどうか検索しましたが、-Xmxと-Xmsオプションが見つかるようです。

EDIT:

のは、私は4GBのRAMを持つサーバーを持っているし、それは私のアプリケーションを実行するとしましょう。 32GBのRAMを備えた別のサーバーがあるとします。 2番目のマシンがより多くのオブジェクトを処理できるため、4GBのメモリ制限でアプリケーションを開始したくありません。

答えて

4

あなたはできません(少なくとも、それをサポートするJVM実装はわかりません)。 JVMは、仮想メモリに連続した範囲を予約できるように、割り当て可能なメモリの量を起動時に知る必要があります。これは、とりわけ、メモリ管理におけるより単純な推論を可能にする。

実行時に仮想メモリを展開すると、断片化した仮想メモリ領域が発生し、メモリの参照と追跡がより困難になる可能性があります。

1

制限付きメモリを持つ物理コンピュータ上でJVMが実行されています。したがって、JVMは、メモリが定義によって制限されている限り、無制限のメモリを持つことはできません。ただし、-Xmxオプションには非常に大きな制限があります。

しかし、なぜあなたは無制限のメモリを必要とするのですか。さらに正確な質問は本当に必要なメモリ量ですか?

+2

問題のポイントは、 '-Xmx'オプションがヒープメモリに* additional *制約を課すことです。 OPはその追加の制約を削除したいので、JVMがOP自身の言葉を使うためには、「できるだけ多くのメモリを取ることができる」... – Holger

12

-XX:MaxRAMFraction=1は、UseCGroupMemoryLimitForHeapが設定されている場合、最大ヒープサイズを物理ラムの100%またはcgroupによって課される制限に自動的に設定します。

OpenJDK 10は、より細かい選択を可能にするパーセンテージベースのオプションMaxRAMPercentageもサポートしますJDK-8186248。スワッピングを避けるために、ヒープ以外のデータ構造にいくらかの余裕を残すことが重要です。

関連する問題