2

こんにちは: 私はマルチスレッド Java アプリケーションを持っています。多くの一時オブジェクトがあります。
-XX:MaxTenuringThreshold=1、JVMを起動するときに上記のパラメーターを入れます。これは、gc 中にすべてのオブジェクトが一度存続し、その後古い世代に昇格されることを意味します。-XX:MaxTenuringThreshold=10たとえば、gc の 10 回後にオブジェクトが古い JVM の古い世代に昇格されるように、これを置くことができますか。しかし、それは若い gc 中に不要なコピー操作を引き起こしますか?

質問は、a) 若い世代に複数回のコピーがあり、古い世代の gc が少ない、b) 古い世代のガベージ コレクションが長いが、若い世代のコピーが少ない場合、どちらがパフォーマンスに優れているかを意味する場合があります。

4

1 に答える 1

5

どちらが「優れたパフォーマンスを得るために優れている」かは、アプリケーションとそれが動作する条件に大きく依存します。最善の望みは、さまざまなガベージ コレクション オプションを試してから、ランタイムとメモリのプロファイリングを実行して、メモリ使用量と速度の最適なトレードオフを取得することです。

残念ながら、ガベージ コレクションの設定に特効薬はありません。

于 2011-06-07T05:10:19.473 に答える