-Xmsパラメータを設定し、たとえば初期メモリを大きくすると、デフォルトの計算メモリ(私の場合はJava GC tunning: http://Java.Sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.ergonomics.default_size )?
また、初期メモリと最大メモリの両方を同じサイズに設定することは有益ですか?
ありがとう。
利点は、サイズを変更する必要があるヒープを使い果たすとパフォーマンスが低下することです。最初に64MBに設定したが、負荷がかかるアプリケーションに250MBが必要であることが判明した場合、64MB近くに達すると、JVMはより多くのヒープスペースを割り当て、一部のオブジェクトを移動し、他のブックキーピングを実行します。もちろんこれには時間がかかります。
アプリケーションに負荷がかかっている場合、すべてのリソースを実行専用にする必要があるため、この余分な作業によりアプリケーションの応答が遅くなる可能性があります。場合によっては、ヒープのサイズが変更される前にメモリが不足するとクラッシュする可能性があります。
Javaアプリを使用すると、「Xms
とXmx
を同じ値に設定する」などの指示が表示されることがあります。これは、サイズ変更を回避するために行われます。全体として、アプリケーションは、これまでと同じ大きさのヒープで起動します。
リンクされた記事はそれを十分に明確に説明しています:
デフォルト値:-Xms 3670k -Xmx 64m [...]大規模なサーバーアプリケーションでは、多くの場合、これらのデフォルトで2つの問題が発生します。 1つは、初期ヒープが小さく、多くの主要なコレクションでサイズを変更する必要があるため、起動が遅いことです。もっと差し迫った問題は、デフォルトの最大ヒープサイズがほとんどのサーバーアプリケーションで不当に小さいことです。サーバーアプリケーションの経験則は次のとおりです。
また、問題の この説明 に関心を持つこともできます。
-Xmsパラメータを設定し、たとえば初期メモリを大きくして、デフォルトで計算されたメモリを使用する利点は何ですか
初期ヒープが小さく、多くの主要なコレクションでサイズを変更する必要がある場合、起動が遅くなります。
また、初期メモリと最大メモリの両方を同じサイズに設定することは有益ですか?
設定-Xms
および-Xmx
を同じ値にすると、予測可能性が得られます。これは、パフォーマンスチューニング中にJVMのサイズを決めるときに特に重要です。しかし、JVMは悪い決定を補うことはできません。
実稼働サーバーにも同じ値を使用する傾向があります(パフォーマンステスト中に調整されます)。
アプリケーションが64 MBを超えるヒープメモリを必要とするのが正常な場合、Xmsをより大きな値に設定すると、VMは追加のメモリを要求する必要がないため、アプリケーションのパフォーマンスが多少向上します回。
実稼働システムでは、XmsとXmxを同じ適切な値に設定することを検討します。基本的には、「これはVMが取得できるヒープメモリの量であり、すぐに使用できるようにしています」と言っています。