68 votes

CMSPermGenSweepingEnabled vs CMSClassUnloadingEnabled

J'ai un peu posé cette question auparavant - Que fait réellement le drapeau JVM CMSClassUnloadingEnabled?, mais cette fois c'est légèrement différent!

Si je démarre une machine virtuelle Java avec le drapeau -XX:+CMSPermGenSweepingEnabled défini, le message suivant est imprimé:

Veuillez utiliser CMSClassUnloadingEnabled à la place de CMSPermGenSweepingEnabled à l'avenir

Le drapeau -XX:+CMSPermGenSweepingEnabled est souvent utilisé pour atténuer les erreurs PermGen OutOfMemory, cependant j'ai lu ailleurs que des personnes ont constaté que en suivant le conseil ci-dessus, elles ont toujours rencontré ces erreurs, mais en restant avec -XX:+CMSPermGenSweepingEnabled ainsi que -XX:+CMSClassUnloadingEnabled leur VM est restée plus longtemps entre les redémarrages.

Est-ce que -XX:+CMSClassUnloadingEnabled remplace vraiment -XX:+CMSPermGenSweepingEnabled ou y a-t-il encore un avantage à les avoir tous les deux?

Rich ps: Je sais que la cause première des problèmes de mémoire perm est généralement les fuites de Classloader, ceci concerne plus le message produit par la JVM si nous utilisons les options ci-dessus.

77voto

kschneid Points 3823

De ce que je peux comprendre, la seule chose que fait la JVM 1.6 avec CMSPermGenSweepingEnabled est d'afficher ce message - il n'est pas traité de la même manière que dans la version 1.5. Pour que CMSClassUnloadingEnabled ait un impact, UseConcMarkSweepGC doit également être activé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X