web-dev-qa-db-ja.com

CMSPermGenSweepingEnabledとCMSClassUnloadingEnabled

以前にこの質問をしたことがあります- JVMフラグCMSClassUnloadingEnabledは実際に何をしますか? 、しかし今回は少し異なります!

Java VMで-XX:+CMSPermGenSweepingEnabledフラグを設定すると、次のメッセージが出力されます。

将来的にはCMSPermGenSweepingEnabledの代わりにCMSClassUnloadingEnabledを使用してください

-XX:+CMSPermGenSweepingEnabledフラグは、PermGen OutOfMemoryエラー、しかし、私は 他の場所で読む を持っている。人々は上記のアドバイスに従えば、これらのエラーがまだあることを発見したが、-XX:+CMSPermGenSweepingEnabled と同様 -XX:+CMSClassUnloadingEnabled彼らのVMは、再起動の間に長く滞在しました。

-XX:+CMSClassUnloadingEnabledは本当に-XX:+CMSPermGenSweepingEnabledまたはそれらの両方を持つことにはまだいくつかの利点がありますか?

前もって感謝します

リッチps:perm genの問題の根本的な原因は通常クラスローダーリークであることがわかっています。これは、上記のオプションを使用した場合にJVMが生成するメッセージに関するものです。

67
Rich

私が言えることから、1.6 JVMがCMSPermGenSweepingEnabledで行うことは、そのメッセージを出力することだけです-1.5のようには処理されません。 CMSClassUnloadingEnabledが影響を与えるには、UseConcMarkSweepGCも設定する必要があります。

76
kschneid