2016-12-22 15 views
2

私はJavaのGCのドキュメントjava:-Xmsと-Xmxが等しくないときに完全なGCが呼び出されるのはなぜですか?関連するパラメータ場合

メモリ空間を読んでいた、古いまたは常設のいずれかが、満杯で、新しいオブジェクトまたはクラスに対応するために、それは、その最大サイズに向けて展開する を必要とします異なる値を持つ。つまり、 -Xmsと-Xmxが異なる値を持ち、さらに多くのオブジェクトに対応するためにOldのサイズを-Xmxから-Xmx に増やす必要がある場合は、FullGCが呼び出されます。同様に、-XX:PermSizeと-XX:MaxPermSizeの値が で、-XX:MaxPermSize〜 に新しいPermanent Spaceを増やす必要がある場合は、FullGCが呼び出されます。これは、常に-Xmsと-Xmx と-XX:PermSizeと-XX:MaxPermSizeを同じ値に設定することで回避できます。

なぜこのケースでFullGCが呼び出されるのでしょうか?使用は何ですか?

答えて

1

ヒープのサイズ変更は、単にメモリを追加するだけではありません。 GCのサイズ変更が必要なデータ構造があり、これを行うにはFullGCを実行する必要があります。

0
  • -Xmsと-Xmxは、アプリケーションに必要なメモリの量を決定しません。
  • -Xmsの値が-Xmxと異なる場合、アプリケーションのメモリ要件を満たすために のヒープサイズを変更するには、完全なGCが呼び出されます。
  • 上記のパラメータが同じ場合は、 のヒープを使用してアプリケーションを起動するため、サイズ変更は避けられます( )。要するに、あなたはJVMに言っています、私のアプリケーションはこれ以上のヒープを必要としません。
関連する問題