6

-Xmx2g を使用すると、ピーク メモリが 1G に達し、主要なコレクション (マークスイープ コレクター) が実行されることがわかります。-Xmx3g で 1.5G に達し、メジャーコレクションを行います。-Xmg4g を使用すると、2G に到達し、主要なコレクションを実行します。しかし、ここから最大メモリを 6G、8G、12G に増やしてみましたが、ピークメモリが 2G に達するたびにメジャーコレクションが行われます。

2Gを超えて使用するにはどうすればよいですか?私はこれのための設定に出くわしませんでした。ここで -Xms は重要ですか? それらの -Xmx に対して、-Xms を -Xmx の半分にしました。

Jetty、Java 1.6.024 を使用しています。

更新: はい、64 ビット JVM を使用しています。私が使用している JVM オプションは次のとおりです。 -Xmx6g -Xms3g -XX:MaxPermSize=256m ピーク メモリを決定する方法は、JConsole のメモリ グラフを調べることです。2Gに達してドロップ(メジャーコレクション)。Old Gen は最大 1.5G に達し、その後ドロップが発生します。

ありがとう、プラム。

4

1 に答える 1

1

eden、survivor、tenured スペースの 3 つのメモリ領域があります。

私が考えているのは、最大サイズを増やしても、tenured スペースまたは eden スペースのいずれかが成長していないということです。

これらの 2 つのリージョンが重要な理由は、Tenured スペースがいっぱいになると、Full GC がトリガーされるためです (このサイズは大きくなっていると思います)。 GC もトリガーされます。

これが問題の原因である場合は、作成される数を減らすことができない限り、パフォーマンスの問題になる可能性が高い中程度の存続期間のオブジェクトを非常に多数作成しています。別の方法として、より大きな新しいサイズを指定して、eden サイズを大きくすることもできます。

試す-mx12g -XX:NewSize=10g - verbosegc

最後のオプションは、個々のスペースがクリーンアップされたときのサイズを示します。

于 2012-04-10T08:25:45.963 に答える