2017-11-19 5 views
1

として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で何とか可能なはずだと思います。

+0

これはおそらく、Javaを呼び出すものであれば何でもしなければならないことでしょう方法。 –

+1

@OliverCharlesworthそれは私が考えたものです。しかし、それは奇妙です。デフォルトは物理メモリの割合で定義されていますが、1/4を1/3または1/2に変更するスイッチはありません。 – Malt

+0

HotSpot JVMのヒープサイズを変更することはできないので、「純粋なJava」ソリューションはリンクされたQ&Aのテクニックを使用して物理メモリサイズを見つけ出し、新しいJVMを起動することです。率直に言えば、あなたはあなたの "clunky"なソリューションで一層良いです。 –

答えて

0

あなたはおそらくそれを自分で行う必要があります。 最大量のメモリを取得し(wmic ComputerSystem get TotalPhysicalMemoryのような構文解析)、これを1/4計算して-Xmxオプションとして設定します。

私は質問したいと思いますなぜ物理メモリのパーセンテージが必要なのでしょうか。メモリの最大量はアプリケーションのメモリ使用量に影響を与えるべきではありません。もしそうならアプリケーションはそれ自身を処理する必要があります

関連する問題