Selon ce lien, il détermine si la classe de déchargement est permis en vertu de la CMS garbage collector. La valeur par défaut est false
. Il y a une autre option appelée" ClassUnloading
c'est - true
par défaut, ce qui (sans doute) affecte les autres ramasseurs d'ordures.
L'idée est que si le GC détecte que précédemment chargés de classe n'est plus utilisé n'importe où dans la JVM, il peut récupérer de la mémoire utilisée pour tenir le bytecode des classes et/ou en code natif.
Réglage CMSClassUnloadingEnabled peut aider avec votre permgen problème si vous utilisez actuellement le CMS collector. Mais les chances sont que vous n'êtes pas en utilisant le CMS, ou que vous avez un vrai chargeur de classe de la mémoire liée à la fuite. Dans ce dernier cas, votre classe n'apparaît jamais à la GC inutilisés ... et ne sera donc jamais être déchargé.
Aaron Digulla dit "les classes sont à jamais". Ce n'est pas strictement vrai, même dans le purement monde Java. En fait, la durée de vie d'une classe est liée à son chargeur de classe. Donc, si vous pouvez organiser un chargeur de classe est le garbage collector (et qui n'est pas toujours une chose facile à faire) les classes qu'elle chargés seront également ordures collectées.
En fait, c'est ce qui se passe quand vous faites une chaude redéployer d'une webapp. (Ou au moins, c'est ce qui devrait arriver, si vous pouvez éviter les problèmes qui mènent à un permgen de stockage de fuite.)