私はJavaを初めて使用し、eclispeのMATを使用してヒープダンプ分析を実行しました。だから私はポイントを下にしたかっただけですa)浅くて保持されたヒープサイズとは何か、そしてそれがどのように計算されているかを理解しますか?例を挙げていただければ幸いです。b)パフォーマンスの問題については、ほとんどの人が最小ヒープサイズと最大ヒープサイズを同じに保つようにアドバイスしてくれました。それで大丈夫ですか、それともアプリケーションごとに主観的ですか?
2 に答える
浅いヒープは、1つが消費するメモリobject
です。オブジェクトには、参照ごとに32ビットまたは64ビット(OSアーキテクチャに応じて)、整数ごとに4バイト、ロングごとに8バイトなどが必要です。ヒープダンプ形式に応じて、サイズを調整できます。
Xの保持されたヒープは、保持されたXのセット内のすべてのオブジェクトの浅いサイズの合計です。つまり、Xによって保持されているメモリです。
このリンクを参照してください。
JVM のサイジングとチューニングは正確な科学ではありません。そのため、最小サイズと最大サイズを同じに設定するという包括的な決定を行うことは、選択するのに最適な構成であるとは限りません。
これは、あなたが下す必要のある決定の種類についての優れた説明だと思います. あなたの質問に対処する際に、それは言います:
-Xms と -Xmx を同じ値に設定すると、最も重要なサイジングの決定が仮想マシンから除外されるため、予測可能性が向上します。ただし、選択を誤ると、仮想マシンはそれを補うことができなくなります。
最小値と最大値を同じに設定しても、Eden スペースのサイズが不適切な場合、ガベージ コレクションのパフォーマンスが低下する可能性があります。
サイジングを決定する唯一の方法は、さまざまなワークロードでアプリケーションを実行し、GC のパフォーマンスを確認することです。