0

著者は、初期のパーマサイズと最大のパーマサイズの値を同じ値に設定すると、完全なGCが発生するのを防ぐことができると示唆していますか?

OldまたはPermanentのいずれかのメモリスペースがいっぱいであり、新しいオブジェクトまたはクラスに対応するには、関連するパラメータの値が異なる場合は、最大サイズに向かって拡張する必要があります。つまり、-Xmsと-Xmxの値が異なり、より多くのオブジェクトに対応するためにOldのサイズを-Xmsから-Xmxに増やす必要がある場合、FullGCが呼び出されます。同様に、‐XX:PermSizeと‐XX:MaxPermSizeの値が異なり、新しいJavaクラスに対応するためにPermanent Spaceを‐XX:MaxPermSizeに向かって増やす必要がある場合、FullGCが呼び出されます。 これは、常に-Xmsと-Xmx   、および-XX:PermSizeと-XX:MaxPermSizeを同じ値に設定することで回避できます。

Javaパフォーマンスチューニングホワイトペーパー:http: //mfinocchiaro.files.wordpress.com/2008/07/java-virtual-machine-neutral.pdf

4

1 に答える 1

2

彼はそう言っていると思います。

しかし、私は彼が正しいとは思わない。確かに、Sun/Oracleの公式文書でこれが言及されているのを見たことはありません。

ご了承ください:

  • リンクされた「ホワイトペーパー」は、Oracle/Sunのドキュメントではありません。
  • 著者はOracle/Sunの従業員ではありません。
  • このペーパーはかなり古く、Java4およびJava5JVMについて言及しています。

GCロギングをオンにして、完全なGCとヒープ拡張の間に相関関係があるかどうかを確認することで、これについて何らかの形で証拠を得ることができるはずです。


初期ヒープサイズと最大ヒープサイズを同じに設定すると、JVMウォームアップのオーバーヘッドが減少すると(よく耳にします)。私が疑わしいのは、各ヒープ拡張の前に完全なGCが存在するという主張/含意です。

于 2012-10-03T01:57:42.460 に答える