としてXmxの設定、デフォルトの最大ヒープ・サイズは、物理メモリ又は1ギガバイトJavaは<a href="https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html" rel="nofollow noreferrer">JDK 8</a>の物理メモリの一部分
の
1/4であり、それはXmxのを使用してオーバーライドすることができますスイッチ:
このデフォルトを無効にするには、-Xmxコマンドラインオプションを使用します。
Xmx
スイッチは、バイト、しない画分で動作します。 がありますかマシンの物理メモリの最大のヒープをX%に設定する方法はありますか?編集:
なぜですか?まず、好奇心。私は、デフォルトのXmxが物理メモリの一部分で定義されていることが奇妙であることを知っていますが、私が触れるとすぐに絶対値になります。第2に、同じ(または類似の)アプリケーションを2つの異なるサーバーに配備し、そのうちの1つがより多くの物理メモリを持つ場合、余分なメモリを自動的に利用するようにJVMを取得するオプションがあります。必ずしも意味をなさないとは限りませんが、時にはそれがあります。
明白な解決策は、空きスペースの量をチェックし、Xmxを計算するシェルスクリプトを使用することですが、それはちょっとしたソリューションのようです。私は純粋なJavaで何とか可能なはずだと思います。
これはおそらく、Javaを呼び出すものであれば何でもしなければならないことでしょう方法。 –
@OliverCharlesworthそれは私が考えたものです。しかし、それは奇妙です。デフォルトは物理メモリの割合で定義されていますが、1/4を1/3または1/2に変更するスイッチはありません。 – Malt
HotSpot JVMのヒープサイズを変更することはできないので、「純粋なJava」ソリューションはリンクされたQ&Aのテクニックを使用して物理メモリサイズを見つけ出し、新しいJVMを起動することです。率直に言えば、あなたはあなたの "clunky"なソリューションで一層良いです。 –